如何从assets文件夹中获取所有文件

ora*_*tis 14 resources android assets

我想使用下面的代码获取我的资源文件夹中的所有图像

private List<String> getImage()
      {
        /* ???????? */
        List<String> it=new ArrayList<String>();      
        File f=new File("file:///android_asset/");  
        File[] files=f.listFiles();
        Log.d("tag", "??asset??");

        /* ???????ArrayList? */
        for(int i=0;i<files.length;i++)
        {
          File file=files[i];
          if(getImageFile(file.getPath()))
            it.add(file.getPath());
        }
        return it;

      }

      private boolean getImageFile(String fName)
      {
        boolean re;

        /* ????? */
        String end=fName.substring(fName.lastIndexOf(".")+1,
                      fName.length()).toLowerCase(); 

        /* ?????????MimeType */
        if(end.equals("jpg")||end.equals("gif")||end.equals("png")
                ||end.equals("jpeg")||end.equals("bmp"))
        {
          re=true;
        }
        else
        {
          re=false;
        }
        return re; 
      }
Run Code Online (Sandbox Code Playgroud)

不知怎的,我不确定这个表达方式

File f=new File("file:///android_asset/"); 
Run Code Online (Sandbox Code Playgroud)

好吧,我知道当你从资源文件夹中读取一个txt文件或html文件时你可以使用它,但是图像也会接受这个吗?

我通过使用下面的代码解决了这个问题

private List<String> getImage() throws IOException
      {
        AssetManager assetManager = getAssets();
        String[] files = assetManager.list("image");   
        List<String> it=Arrays.asList(files);
        return it; 

        }
Run Code Online (Sandbox Code Playgroud)

如果有人想知道

Hua*_*ang 11

通常,您可以使用AssetManager管理资产文件夹中的文件.在活动中,调用getAssets() 方法以获取AssetManager实例.

编辑:您可以使用AssetManager读取如下图像:

AssetManager am=this.getAssets();
        try {
            Bitmap bmp=BitmapFactory.decodeStream(am.open("009.gif"));
            chosenImageView.setImageBitmap(bmp);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

请注意,BitmapFactory.decodeStream()默认情况下,该方法在UI线程上运行,因此如果图像太大,应用程序将会卡住.在这种情况下,您可以更改samplesize或启动新线程来执行此操作.