Java 写入文件问题
我正在使用这段代码用java编写一个文件。它一直有效,我100%确信它是正确的。但是文件仍然没有被写入。 我连一个错误都没有Java 写入文件问题,java,file-io,Java,File Io,我正在使用这段代码用java编写一个文件。它一直有效,我100%确信它是正确的。但是文件仍然没有被写入。 我连一个错误都没有 import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public class writetofile { public static void main(String [] args){ FileWriter fw;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class writetofile {
public static void main(String [] args){
FileWriter fw;
try {
fw = new FileWriter("testfile.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write("this is test");
bw.write("this is test");
bw.write("this is test");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
可能是其他问题吗?尝试
fw.flush()
和fw.close()
您没有调用BufferedWriter
对象上的close()
方法。这意味着缓冲区永远不会被刷新。在上次的bw.write()
语句之后添加bw.close()
。确保在方法退出之前调用bw.close()
。如果未刷新缓冲区,则文件将不会被写入。请尝试使用sw.close()
关闭流,否则数据仍可能被缓存,而不是实际写入磁盘。您需要刷新缓冲区,还应关闭文件:
try {
fw = new FileWriter("/tmp/testfile.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write("this is test");
bw.write("this is test");
bw.write("this is test");
bw.flush();
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
此外,您还应该将实际文件写入的IOException与文件关闭分开处理,这样您就不会在最后打开文件描述符:
FileWriter fw = null;
try {
fw = new FileWriter("/tmp/testfile.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write("this is test");
bw.write("this is test");
bw.write("this is test");
bw.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fw != null) {
fw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
+1:…但是
bw.close()
会自动调用bw.flush()
,所以您只需调用close就可以了。非常感谢!我简直不敢相信我会这么做:P:)这总是发生在Hurry中,应该是bw.flush()和bw.close(),调用fw函数不会如此频繁地刷新缓冲区writer hanks!我不知道我是怎么错过的!超级愚蠢!对不起@吉利卡:我敢肯定,每个Java程序员都有过这样的经历,而且不止一次。+1,是唯一一个提到最后以正确的方式接近的人。请注意,flush()
仍然是不必要的,因为close()
隐式地这样做。但这并不痛。在特殊情况下,如果最后不靠近,
可能会造成更大的伤害。永远不要100%确定,而是100%好奇;)