【问题标题】:How to get folder from assets?如何从资产中获取文件夹?
【发布时间】:2014-03-10 18:59:53
【问题描述】:
File directory = new File(android.os.Environment.getExternalStorageDirectory()+ File.separator+"folder");

上面的代码可以获取内存卡中的一个文件夹作为一个File。然后我使用File 类来获取文件夹中的文件。

如何从资产中获取文件夹作为File 对象?

【问题讨论】:

标签: android android-file android-assets


【解决方案1】:

尝试如下:

AssetManager am = getAssets();
InputStream inputStream = am.open(file:///android_asset/foldername/filename);
File file = createFileFromInputStream(inputStream);

private File createFileFromInputStream(InputStream inputStream) {

   try{
      File f = new File(my_file_name);
      OutputStream outputStream = new FileOutputStream(f);
      byte buffer[] = new byte[1024];
      int length = 0;

      while((length=inputStream.read(buffer)) > 0) {
        outputStream.write(buffer,0,length);
      }

      outputStream.close();
      inputStream.close();

      return f;
   }catch (IOException e) {
         //Logging exception
   }

return null;
}

使用以下代码将资产文件夹和文件放入字符串数组中。

     final AssetManager assetManager = getAssets();
        try {
            // for assets folder add empty string
                        String[] filelist = assetManager.list("");
                        // for assets/subFolderInAssets add only subfolder name
                        String[] filelistInSubfolder = assetManager.list("subFolderInAssets");
            if (filelist == null) {
                // dir does not exist or is not a directory
            } else {
                for (int i=0; i<filelist.length; i++) {
                    // Get filename of file or directory
                    String filename = filelist[i];
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

【讨论】:

  • 我会看看这个:D
  • 你想得到什么? @user2982786
  • 好吧....就像我上面的代码...目录指向一个文件夹..不是文件...如果我要指向的文件夹在资产文件夹?
  • 上面的代码也可以用来指向文件夹。只是不要在其中添加文件名。
  • 现在我有最后一个问题...为什么在资产文件夹中获取文件比在存储中获取文件要慢
【解决方案2】:

没有“资产文件夹中存在的文件的绝对路径”。您可以使用以下代码从 assets 文件夹中获取详细信息,

uri = Uri.fromFile(new File("//assets/aaa/aaa.txt"));

【讨论】:

  • 有没有办法让它成为一个文件对象?而不是指向一个文件,我希望它指向一个目录?
  • 例如 new File("assets/folder");
  • 您可以将该 url 用作文件对象的文件路径。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-14
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2014-05-16
相关资源
最近更新 更多