2 compression android 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);
}
Run Code Online (Sandbox Code Playgroud)
我现在从日志中看到的是相当奇怪的 - 如果文件包含这样的东西
Fred
Barney
Wilma
Run Code Online (Sandbox Code Playgroud)
我在日志中看到了大量的废话
????!?c?W???6?f????m?>????'?????6?#6???l0??mp?
Run Code Online (Sandbox Code Playgroud)
跟着 - 最终是我的文字内容
Fred
Barney
Wilma
Run Code Online (Sandbox Code Playgroud)
接着是另一公吨的胡言乱语 - 其中一些看起来像这样
??????????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????????????????????????
Run Code Online (Sandbox Code Playgroud)
如您所见,这似乎是来自APK的原始二进制内容(与文本文件无关)?
这是最近的包装问题还是我错过了什么?我正在使用ADT15,但我还没有尝试过最近的升级!?
ps我已经升级到最新的SDK/ADT并且这个问题仍然存在 - 显然我想跟谁有问题升级它(不知道问题是Eclipse/ADT/ANT还是Android中心)所以我会为想法开始赏金......
这是因为AssetFileDescriptor.getFileDescriptor()您的.apk而不是.apk中的mytextfile.mp3文件.与AssetFileDescriptor你合作需要考虑AssetFileDescriptor.getStartOffset()到例如,实际文件的偏移,即mytextfile.mp3在你的情况下.
但是你的问题很简单.使用AssetManager.open(String)替代,这将给你一个InputStream到mytextfile.mp3文件中.像这样:
InputStream inputStream = getAssets().open("mytextfile.mp3");
BufferedReader f = new BufferedReader(new InputStreamReader(inputStream));
// ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6327 次 |
| 最近记录: |