簡體   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