我想读一个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:此文件无法作为文件描述符打开;它可能已被压缩。
我的文件位于资源文件夹中。
我已经看过这个帖子:java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed 它根本没有帮助我。
所以,我必须做错事,但是什么? 我应该将文件放在另一个文件夹上并通过其他方法打开吗?
答案 0 :(得分:4)
Android会压缩所有资源,但以下类型除外:
".jpg", ".jpeg", ".png", ".gif",
".wav", ".mp2", ".mp3", ".ogg", ".aac",
".mpg", ".mpeg", ".mid", ".midi", ".smf", ".jet",
".rtttl", ".imy", ".xmf", ".mp4", ".m4a",
".m4v", ".3gp", ".3gpp", ".3g2", ".3gpp2",
".amr", ".awb", ".wma", ".wmv"
如果您对构建过程有足够的控制权,则可以使用 带有zip或aapt的“-0”标志添加资产。
-0指定此类文件不会的附加扩展名 被压缩存储在.apk中。空字符串表示不是 压缩任何文件。
如果您有机会使用CSVReader,请将csv文件存放在assets文件夹以外的位置,例如sdcard。