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

时间:2012-11-07 08:46:57

标签: 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());
        }

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

3 个答案:

答案 0 :(得分:5)

我个人使用Guava

File file = new File("Saves", "Body.sav");
String text = Files.toString(file, Charsets.UTF_8);

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

您当前的代码存在许多问题:

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

答案 1 :(得分:3)

  

我如何阅读...放入jTextArea?

我建议忽略该陈述的整个中间部分。

File file = new File("./Saves/Body.sav");
FileReader fileReader = new FileReader(file);
textArea.read(fileReader, file);

答案 2 :(得分:1)

您可以使用StringBuilder(或同步版本StringBuffer)并继续向其添加strLine。以这种方式声明:

StringBuilder s = new StringBuilder();

并在while循环中:

s.append(strLine + "\n");