【发布时间】:2013-11-09 18:05:19
【问题描述】:
我有两部手机,一部带有 android 4.2.2 的 Galaxy s4 和一部带有 android 4.0.3 的 Galaxy s2。我正在打开一个 torrent 文件以阅读信息。我得到了这个代码:
metafile = new Metafile(new BufferedInputStream(new FileInputStream(DotTorrentPath)));
元文件是库中的一个类。在我的 g4 上,我从解析 torrent 文件的库中收到一个内部错误。 java.io.IOException: Problem parsing bencoded file。在我的 g2 上,一切正常。我一直在互联网上浏览有关 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 上运行?
感谢您的帮助
【问题讨论】:
-
mark() 与 BufferedInputStream 协同工作的效果如何?见stackoverflow.com/questions/8599172/…
-
删除缓冲的输入流时你试过了吗?
-
可以,但是文件输入流不支持 mark()
-
在调用parse()之前,库有这个条件if(!is.markSupported()) throw error;
-
你解决过这个问题吗?