所以我有c ++的背景,我正在努力学习java。一切都非常相似。我有文件i / o的问题。因此,我正在搞乱并做一些非常简单的程序来获得基本的想法。这是我将数据写入文件的代码。我的代码生成一个文件,但是当我打开文件时它是空的并且不包含我告诉它写的字符串。
package practice.with.arrays.and.io;
import java.io.IOException;
import java.io.PrintWriter;
public class PracticeWithArraysAndIO
{
public static void main(String[] args) throws IOException
{
//Declaring a printWriter object
PrintWriter out = new PrintWriter("myFile.txt");
out.println("hello");
}
}
答案 0 :(得分:4)
输出被缓冲,需要flush()
来写入文件。
package practice.with.arrays.and.io;
import java.io.IOException;
import java.io.PrintWriter;
public class PracticeWithArraysAndIO {
public static void main(String[] args) {
PrintWriter out = new PrintWriter("myFile.txt");
out.println("hello");
out.flush();
}
}
但是你不需要明确地进行冲洗,因为无论如何当你close()
作家时你都应该这样做。
package practice.with.arrays.and.io;
import java.io.IOException;
import java.io.PrintWriter;
public class PracticeWithArraysAndIO {
public static void main(String[] args) {
PrintWriter out = new PrintWriter("myFile.txt");
try {
out.println("hello");
} finally {
out.close();
}
}
}
但是您也不需要显式关闭,因为PrintWriter
实现了AutoCloseable
,因此您可以使用Java 7的自动资源管理:
package practice.with.arrays.and.io;
import java.io.IOException;
import java.io.PrintWriter;
public class PracticeWithArraysAndIO {
public static void main(String[] args) {
try (PrintWriter out = new PrintWriter("myFile.txt")) {
out.println("hello");
}
}
}