![](/img/trans.png)
[英]How do I parse a text file to write certain lines in another text file using 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
更新:
所有輸入輸出操作都需要處理流,通道,文件描述符(在您的特定情況下,如FileWriter
, BufferedWriter
)。 這些流應仔細關閉以釋放系統資源。 否則可能會導致資源泄漏。 盡管您關閉了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.