我有两部手机,一个是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)中添加的。

09-10 14:03