繁体   English   中英

如何在Java中将多个行写入文本文件?

[英]How do I write multiple lines to a text file in Java?

所以我想用Java创建并写入文件。 我知道如何用一行来完成,但是我想知道如何将多个行写到一个文件中。

import java.io.FileWriter;
import java.io.BufferedWriter;

public class WritingToAFile {

public static void main(String[] args) {

   try{ 
   FileWriter fstream = new FileWriter ("P:/Computer Science/greeting.txt");
   BufferedWriter info = new BufferedWriter(fstream);

   for(int i = 1; i < 6; i++){
       info.write("Hello");
       info.newLine();
       info.write("Bonjour");
       info.newLine();
       info.write("Guten tag");
       info.newLine();
       info.write("Aloha");
       info.newLine();
       info.write("Nihao");
       info.close();
       }catch(Exception e){
          System.out.println("A write error has occurred");
    }   
  }
}

我知道现在错了,但是我不确定自己做错了什么。 帮助将不胜感激! 我只是一个初学者,所以我真的迷路了。

您正在关闭每次迭代的文件info.close(); -这就是您会有例外的原因。 完成写入后,您需要关闭文件。

newLine();没有错newLine(); 方法。 但是,您可以使用换行符将其缩短。

"\\n" -是基于Unix的系统的新行分隔符。

"\\r\\n" -是Windows系统的新行分隔符。

"%n"是独立于平台的换行符。

for(int i = 1; i < 6; i++) {
    info.write(String.format("Hello%n"));
}
info.close();

第二个问题是您没有关闭FileWriter本身。

如果您使用的是Java 7+,我建议您使用try-with-resources来实现,以摆脱finally块:

public class Main {

    public static void main(String[] args) {
        try (FileWriter fstream = new FileWriter("greeting.txt");
             BufferedWriter info = new BufferedWriter(fstream)) {
            for (int i = 1; i < 6; i++) {
                info.write(String.format("Hello%n"));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

文件输出:

Hello
Hello
Hello
Hello
Hello

更新:

所有输入输出操作都需要处理流,通道,文件描述符(在您的特定情况下,如FileWriterBufferedWriter )。 这些流应仔细关闭以释放系统资源。 否则可能会导致资源泄漏。 尽管您关闭了info您忘记了在代码中关闭fstream

当正确使用try-with-resources语句时,您将不必显式关闭流。 try-with-resources语句可确保在语句末尾关闭每个资源。

几乎完全正确,实际上,它与info.newLine();无关info.newLine(); 而是代码的语法。

您的catch实际上是在for循环之后,并且未连接到try

而且,您还可以在for循环中关闭流,而不是在流完成之后关闭它(这将导致IOException )。

样品:

try {
    FileWriter fstream = new FileWriter("P:/Computer Science/greeting.txt");
    BufferedWriter info = new BufferedWriter(fstream);
    for (int i = 1; i < 6; i++) {
        info.write("Hello");
        info.newLine();
        info.write("Bonjour");
        info.newLine();
        info.write("Guten tag");
        info.newLine();
        info.write("Aloha");
        info.newLine();
        info.write("Nihao");
    }
    info.close();
} catch (Exception e) {
    System.out.println("A write error has occurred");
}

只需在write方法的字符串末尾基于系统添加\\n\\r\\n平台新行字符

try{
    for(int i = 1; i < 6; i++){
           info.write("Hello\n");
           info.write("Bonjour\n");
           ...

           }
    }
    catch (Exception e) {
    System.out.println("A write error has occurred");
}
finally{
    info.close();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM