使用BufferedReader和FileReader从文件中读取

时间:2017-06-28 02:42:23

标签: java file input bufferedreader filereader

我对java比较陌生,我很好奇如何使用缓冲读取器从文件中读取。这个的原因是我正在上课并被分配做一个简单的ceaser密码,我应该解密文本文件,创建一个新文件,并将解密的文本放入该文件中。我能够用扫描仪和一个10KB的小文件做到这一点,但是当我使用100MB的大文本文件时它会非常慢。 这是我应该读取文件内容的代码。

public static void main(String[] args)
{
    BufferedReader br = null;
    FileReader file = null;
    String line = null;
    String all = null;
    try
    {
        file = new FileReader("myfile.txt");
        br = new BufferedReader(file);
        while ((line = br.readLine()) != null) {
            all += line;
        }
    }catch(Exception e)
    {
        System.out.println("nope");
    }
    System.out.println(all);

}

如果有人能指出我正确的方向,那就太棒了。

提前致谢

2 个答案:

答案 0 :(得分:3)

流式传输,不要将其读入内存。此外,我更喜欢尝试使用资源(因为您需要关闭资源)。您可以随时调整缓冲区大小,例如 -

final int size = 1024 * 1024;
try (BufferedReader br = new BufferedReader(new FileReader("myfile.txt"), size)) {
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line); // <-- stream it
    }
} catch (Exception e) {
    e.printStackTrace();
}

从不吞下Exception(s) - “nope”不是很有帮助。

答案 1 :(得分:1)

Java中的字符串是不可变的,因此每次运行此代码时都是

all += line;

它创建一个新的String并分配给所有人,使用StringBuider或StringBuffer

例如

StringBuilder all = new StringBuilder();

希望它有所帮助!