我用我的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中心)所以我会开始一个想法的赏金......
答案 0 :(得分:0)
答案 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();
}