为什么AssetManager list()不显示我的资产文件夹?

时间:2013-07-16 08:13:04

标签: android android-studio assets

在我的Android应用中,我在/ assets文件夹中打包了一个需要复制到SDCARD的文件。当我将资产文件夹的内容列为String[]时,我会获得“images”,“sounds”,“webkit”和“kioskmode”,但不会将我的文件手动添加到assets文件夹中。

我的代码在这里:

private void copyAsset () {
    AssetManager am = getApplicationContext().getAssets();
    String[] files = null;
    try {
      files = am.list("");
    } catch (IOException e) {

    }

    for (String filename : files) {
        if (filename.equals("images") || filename.equals("kioskmode") ||
                filename.equals("sounds") || filename.equals("webkit")) {
            Log.i(TAG, "Skipping folder " + filename);
            continue;
        }
        InputStream in = null;
        OutputStream out = null;
        try {
            in = am.open(filename);
            File outFile = new File(Environment.getExternalStorageDirectory().getPath(), filename);
            out = new FileOutputStream(outFile);
            copyFile(in, out);
            in.close();
            in = null;
            out.flush();
            out.close();
            out = null;
        } catch (IOException e) {
            e.printStackTrace();
            Log.e(TAG, "Error copying asset ", e);
        }
    }
}

这是我的应用中的第二个类,并且使用Intent showHelper = new Intent(this, HelperManager.class); startActivity(showHelper);在我的MainActivity中调用它会有所不同吗?

我尝试使用和不带AssetManager am = ...位的第二行(getApplicationContext()),尝试将文件移动到/ assets的子文件夹中,并使用前导和尾部斜杠尝试files = am.list("")。如果我使用子文件夹,则代码运行时files文件数组为空(在files = am.list("");行上设置断点并在运行时检查它。 奇怪的是它曾经工作过一次 - 当我第一次编写代码时,但为了进一步测试,我从手机上的/ sdcard文件夹中删除了该文件,并且它从未工作过,因为即使该文件仍在资源文件夹中。 如果重要的话,我正在使用Android Studio。 感谢

1 个答案:

答案 0 :(得分:0)

管理以使用Load a simple text file in Android Studio作为修复程序获取解决方案。它仍然将4个文件夹放在文件数组中,但我可以使用上面给出的代码跳过它们,虽然我应该检查我想要的文件而不是4我没有!