我有两部手机,一个是android 4.2.2的galaxy s4,另一个是android 4.0.3的galaxy s2。我正在打开一个种子文件以阅读信息。我得到了这段代码:
metafile = new Metafile(new BufferedInputStream(new FileInputStream(DotTorrentPath)));
图元文件是库中的类。在我的g4上,我从解析torrent文件的库中收到内部错误。
java.io.IOException: Problem parsing bencoded file
。在我的g2上,一切正常。我一直在Internet上浏览有关4.2中FileInputStream或BufferedInputStream的更改,但没有找到任何东西。在两部手机上,DotTorrentPath都是/mnt/sdcard/Download/thisisatorrent.torrent
该库的代码是
private Object parse(InputStream is) throws IOException {
is.mark(0);
int readChar = is.read();
switch (readChar) {
case 'i':
return parseInteger(is);
case 'l':
return parseList(is);
case 'd':
return parseDictionary(is);
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
is.reset();
return parseByteString(is);
default:
throw new IOException("Problem parsing bencoded file");
}
}
在我的g2上,
is.read()
返回100。在我的g4上,它返回31。我使用的是完全相同的文件。任何想法为什么它不能在4.2上运行?谢谢您的帮助
最佳答案
确保您具有READ_EXTERNAL_STORAGE权限。该权限是在Android 4.1 (see docs)中添加的。