在我的 Android 应用程序中,我在 /assets 文件夹中打包了一个需要复制到 SDCARD 的文件。当我将 assets 文件夹的内容列出到 a 时,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);
}
}
}
这是我的应用程序中的第二个类并在我的 MainActivity 中使用调用,这有什么不同Intent showHelper = new Intent(this, HelperManager.class);
startActivity(showHelper);
吗?
AssetManager am = ...
我已经尝试了带和不带位的第二行( ) getApplicationContext()
,尝试将文件移动到 /assets 的子文件夹中,并尝试files = am.list("")
使用前导和尾随斜杠。如果我使用子文件夹,则代码运行时文件数组为空(files = am.list("");
在行上设置断点并在运行时检查它。奇怪的是它工作过一次 - 当我第一次编写代码时,但为了进一步测试,我从手机上的 /sdcard 文件夹中删除了该文件,并且它从未工作过,因为即使该文件仍在资产文件夹中。如果这很重要,我正在使用 Android Studio。谢谢