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

时间:2011-12-03 13:53:19

标签: android resources 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; 
      }

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

File f=new File("file:///android_asset/"); 

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

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

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

        }

如果有人想知道

1 个答案:

答案 0 :(得分: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();
        }

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