【发布时间】:2012-07-26 21:05:24
【问题描述】:
我想读取一个 csv 文件。为此,我找到了我这样使用的 CSVReader:
List myEntries = null;
try {
AssetFileDescriptor descriptor = getAssets().openFd("file.csv");
CSVReader csvReader = new CSVReader(new FileReader(descriptor.getFileDescriptor()), ',', '"');
myEntries = csvReader.readAll();
csvReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
但是我得到了这个错误: FileNotFoundException:这个文件不能作为文件描述符打开;它可能被压缩了。
我的文件位于 assets 文件夹中。
我已经看过这个帖子了:java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed 它对我一点帮助都没有。
所以,我必须做错什么,但是怎么办? 我应该把我的文件放在另一个文件夹中,然后用其他方法打开吗?
【问题讨论】:
-
您是否尝试过参考帖子中提到的建议(例如手动将文件添加到 apk 中的 assets 文件夹)?此外,发布异常的完整堆栈跟踪也不会受到影响。
-
你说得对,这种方式效果很好。顺便说一句,因为我们正在谈论压缩......我有大约一百个 xml 文件(150MB)被压缩,因为我的 apk 文件只有 4.5MB。由于它们是压缩的,我猜应用程序需要更多时间来访问这些文件中的数据,对吗?然后,如果我把这些文件放在 SD 卡上读取会不会更快?
-
这取决于您的应用程序访问文件的方式。我可以想象会有某种缓存,所以不能保证会有很大的不同。我想了解的唯一方法就是尝试一下。
标签: android csv filenotfoundexception