FileReader csv:FileNotFoundException:此文件无法作为文件描述符打开;它可能是压缩的

时间:2012-07-26 21:05:25

标签: android csv filenotfoundexception

我想读一个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 它根本没有帮助我。

所以,我必须做错事,但是什么? 我应该将文件放在另一个文件夹上并通过其他方法打开吗?

1 个答案:

答案 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。