Android - 从Assets读取文本文件似乎在实际数据之前/之后包含很多垃圾?

时间:2011-11-22 00:36:22

标签: android compression assets corruption text-files

我用我的Android应用程序(在资产中)打包一个文本文件,我在应用程序本身中阅读。

为了避免这个文件被压缩,它被命名为'mytestfile.mp3',直到最近,它才能正常工作。

在最近的一次SDK / ADT更改中,从资产中读取时似乎发生了一些“奇怪”的事情,而且我对这是什么感到开心......

我使用类似这样的代码

AssetFileDescriptor descriptor = getAssets().openFd("mytextfile.mp3");
BufferedReader f = new BufferedReader(new FileReader(descriptor.getFileDescriptor()));
String line = f.readLine();
while (line != null) {
    // do stuff
    Log.d("TAG",line);
}

我现在从日志中看到的内容相当奇怪 - 如果文件包含类似的内容

Fred
Barney
Wilma

我在日志中看到了大量的废话

��ߴ�!�c�W���6�f����m�>ߩ���'�����6�#6���l0��mp�

紧随其后 - 最终是我的文字内容

Fred
Barney
Wilma

接着是另一公吨的胡言乱语 - 其中一些看起来像这样

����������4�u?'����������������������������������������res/drawable-mdpi/icon.pngPK��������|v?,������������'�����������������������������res/layout-land/dialog_color_picker.xmlPK��������|v?1�!�����t2�������������������������������classes.dexPK��������|v?թVڝ����5���������������������������������META-INF/MANIFEST.MFPK��������|v?�v������j���������������������������������META-INF/CERT.SFPK��������|v?W7@�]�������������������������������������META-INF/CERT.RSAPK������������������������

正如您所看到的,这似乎是来自APK的原始二进制内容(与文本文件无关)??

这是最近的包装问题还是我遗漏了什么?我正在使用ADT15,但我还没有尝试过最近的升级!?

P.S。我已经升级到最新的SDK / ADT并且这个问题仍然存在 - 显然我想跟谁有问题升级它(不知道问题是Eclipse / ADT / ANT还是Android中心)所以我会开始一个想法的赏金......

2 个答案:

答案 0 :(得分:0)

Eclipse / ADT偶尔会损坏资源。尝试清理并重建项目以查看是否可以修复它。

答案 1 :(得分:0)

我的应用程序遇到了同样的问题。尝试使用Apache Commons IO's FileUtils。 这为你的apk增加了另外100kb,但使文件处理更容易。 如果您将文件存储为myfile.txt而不是.mp3,它是否会提供相同的输出?

您是否使用Windows或Linux / Unix系统创建了该文件? (还有什么应用?)

/ edit:这对我有用:

AssetManager am = this.getAssets();
        InputStream is = am.open("mytextfile.mp3");
        InputStreamReader inputStreamReader = new InputStreamReader(is);
        BufferedReader f = new BufferedReader(inputStreamReader);
        String line = f.readLine();
        while (line != null) {
            // do stuff
            Log.d("TAG", line);
            line = f.readLine();
        }