首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >慢文件读取

慢文件读取
EN

Stack Overflow用户
提问于 2011-11-03 20:25:40
回答 2查看 1.4K关注 0票数 0

从内部手机存储器读取一个小文件(138 kb)非常缓慢。这需要大约490个小姐。只在70 ms中编写相同的文件。(用仿真器测量)

有加速的建议吗?

谢谢,亚历山大·米克,柏林

代码语言:javascript
复制
private String readFromInternal(String filename) {
    try {
        FileInputStream fileInputStream = openFileInput(filename);
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
        StringBuilder stringBuilder = new StringBuilder();
        String line;
        while ((line = bufferedReader.readLine()) != null)
            stringBuilder.append(line);
        return stringBuilder.toString();
    } catch (Exception e) {
        return null;
    }
}

private boolean writeToInternal(String filename, String text) {
    try {
        FileOutputStream fileOutputStream = openFileOutput(filename, Context.MODE_PRIVATE);
        fileOutputStream.write(text.getBytes());
        fileOutputStream.close();
        return true;
    } catch (Exception e) {
        return false;
    }
}
EN

回答 2

Stack Overflow用户

发布于 2011-11-03 20:59:12

我不会在仿真器上测试任何东西。您可以通过确保您的BufferedReader有一个相对较大的缓冲区来加快速度。说4KISH。几年前,我对最佳缓冲区大小进行了一般的Java测试,在1-2k以上,它似乎没有多大帮助。

在手机上试试这个。

为什么阅读比写作慢是我无法理解的,但同样,模拟器并不是你想要测试的地方。

您可以尝试反转缓冲区位置。将缓冲区放在流的周围,而不是读取器:

新BufferedReader(新BufferedInputStream(fileInputStream,2048))

我想您使用BufferedReader可以逐行阅读。创建2个自助餐可能不是很好,所以如果您有一种方法可以读取不需要BufferedReader的行,那么您可能会更好。

票数 0
EN

Stack Overflow用户

发布于 2011-11-03 20:29:28

你的问题是你正在逐行阅读,但却一蹴而就。试着一次将文件读入缓冲区,而不是while循环。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8001403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档