0

我尝试了许多不同的东西,这是迄今为止唯一可以从文件中读取一行的东西......

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

4

3 回答 3

5

我个人会使用Guava

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

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

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

  • DataInputStream它无缘无故地创造了一个
  • 可能不会从使用中获得太多收益BufferedReader
  • 您没有指定字符编码,因此您隐式地获得了平台默认值,这几乎不是一个好主意。
  • 由于某种原因,您正在关闭in位于输入链中间的...我希望关闭brfstream
  • in只有在没有异常的情况下才会关闭(finally如果您使用的是 Java 7,请使用块或 try-with-resources 语句)
  • 您似乎有一个名为 的字段Body,违反了 Java 命名约定
  • 你正在捕捉Exception而不是IOException- 更喜欢捕捉特定的异常
  • 您通过有效地忽略它来“处理”异常,这几乎是不合适的。(读取文件的代码很少是决定如何处理异常的正确代码。)
于 2012-11-07T08:48:26.943 回答
3

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

我建议忽略该声明的整个中间部分。

File file = new File("./Saves/Body.sav");
FileReader fileReader = new FileReader(file);
textArea.read(fileReader, file);
于 2012-11-07T09:20:26.567 回答
1

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

StringBuilder s = new StringBuilder();

并在while循环中:

s.append(strLine + "\n");
于 2012-11-07T08:49:52.580 回答