如何将文件中的多行读入字符串以放入jTextArea?

rez*_*adi 0 java swing

香港专业教育学院尝试了许多不同的东西,这是迄今为止从文件中读取一行的唯一方法...

try{

        FileInputStream fstream = new FileInputStream("./Saves/Body.sav");
        BufferedReader br = new BufferedReader(new InputStreamReader(infstream);
        String strLine;    
        while ((strLine = br.readLine()) != null)   {      
        System.out.println(strLine);
        w1.Body = strLine;
        }  
        in.close();
          }catch (Exception e){//Catch exception if any
        System.err.println("Error: " + e.getMessage());
        }
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个加载函数,所以我可以将文件从文件加载到字符串上的jTextArea ...没有任何类型的openfiledialog

Jon*_*eet 5

我个人使用番石榴:

File file = new File("Saves", "Body.sav");
String text = Files.toString(file, Charsets.UTF_8);
Run Code Online (Sandbox Code Playgroud)

当然,这是假设它是一个UTF-8文件.相应调整.

您当前的代码有很多问题:

  • 它创造了一个DataInputStream没有明显原因
  • 可能从使用中获得的收益不大BufferedReader
  • 你没有指定字符编码,所以你隐式地得到了默认的平台,这几乎不是一个好主意.
  • in由于某种原因,你正在关闭输入链中间......我希望关闭其中一个br或者fstream
  • 只有in在没有异常的情况下才会关闭(finally如果您使用的是Java 7,则使用块或try-with-resources语句)
  • 您似乎有一个名为的字段Body,违反了Java命名约定
  • 你是捕捉Exception而不是IOException- 更喜欢捕捉特定的例外
  • 你被有效地忽略它,这几乎是"处理"异常从来没有合适的.(读取文件的代码很少是确定如何处理异常的正确代码.)

  • @AlexLynch:我在现有代码中添加了一些错误的东西,但我觉得教一个新用户关于一个库,这将有助于他避免重新发明轮子(严重)可能是*最*的好处. (3认同)