![](/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.