通常我喜欢将我的应用程序文件保存在 assets
中,然后我从该文件夹中读取我的文件。所以,当我试图从 Assets 文件夹中读取我的 excel 文件(这是一个 97-2003 工作簿)时,它失败了(进程 - 1)。但是,当我使用 adb.exe
将文件推送到 /mnt/sdcard/
然后尝试从那里读取时,它有效(进程 - 2)。
流程代码 - 1:
File inputWorkbook = new File((assetManager.open("myFile.xls")).toString());
异常显示:
java.io.FileNotFoundException: /android.content.res.AssetManager$AssetInputStream@40cd4ce0: open failed: ENOENT (No such file or directory)
流程代码 - 2:
File inputWorkbook = new File(Environment.getExternalStorageDirectory()+"/myFile.xls");
1> 谁能告诉我,我做错了什么?
2> 此外,我保存在 Assets 中的文件的文件大小是否有任何限制?如果是这样,那么我可以将它保存在其他地方吗?
谢谢。
编辑:我有这个可以工作:
InputStream dbInputStream = context.getAssets().open("myFile.xls");
不过,我还是想知道任何替代解决方案,如果有人有这样的解决方案以及我的第二个问题的答案。
最佳答案
一种方式(从 Assets 文件夹读取):
AssetManager assetManager = m.getInstrumentation().getContext().getResources().getAssets();
InputStream in = assetManager.open(filename);
另一种方式(从/mnt/sdcard/Android/data/file读取)
File file = new File(m.getInstrumentation().getContext().getExternalFilesDir(null), filename);
fis = new FileInputStream(file);
关于android - 从 Assets 文件夹读取 Excel 工作簿时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17786309/