Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 写入文件问题_Java_File Io - Fatal编程技术网

Java 写入文件问题

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;

我正在使用这段代码用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;

        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%好奇;)