0

我想阅读一个 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:这个文件不能作为文件描述符打开;它可能被压缩 了它根本没有帮助我。

所以,我必须做错什么,但是什么?我应该将我的文件放在另一个文件夹中并用另一种方法打开它吗?

4

1 回答 1

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。

于 2012-07-26T23:25:15.757 回答