为什么文件中没有所有的条目?

gv8xihay  于 2021-07-05  发布在  Java
关注(0)|答案(4)|浏览(366)

这个问题在这里已经有答案了

bufferedwriter未将所有内容写入其输出文件(9个答案)
6年前关门了。
在下面的程序中,loop正在迭代1000次,我正在使用filewriter写入文件中的所有条目,但不幸的是,程序最终只在文件中写入510个条目(有时415个,有时692个,总是小于1000个),但loop正在迭代1000次。

import java.io.* ;
import java.util.*;

public class DemoWriter {

    public static void main(String[] args) throws Exception {

        List<String> receiverList = new ArrayList<String>() ;
        receiverList.add("abc@gmail.com") ;
        receiverList.add("pqr@ibibo.com") ;
        receiverList.add("xyz@gmail.com") ;

        FileWriter fw = new FileWriter("a.txt") ;
        BufferedWriter bw = new BufferedWriter(fw) ;

        int size = receiverList.size() ;

        String str ;
        int count = 0 ;
        for(int i = 1 ; i <= 1000 ; ++i){
            str = receiverList.get( (int) (Math.random() * size) ) + "\n" ;
            bw.write(++count + ".> " + str) ;
            System.out.print(count + ".> " + str) ;
        }
    }
}

这是因为文件大小还是其他原因???
谢谢你对这里所有好人的快速React。我已经纠正了我的代码(我只是忘记关闭流,现在代码工作得很好)。正如所有人指出的,我需要关闭这条小溪,但我接受巴卢斯克,因为他是第一个回答。
很高兴来到这里。干杯:)

j5fpnvbx

j5fpnvbx1#

只需添加

bw.flush();
    bw.close();

到方法的结尾

z9ju0rcb

z9ju0rcb2#

是否需要关闭bufferedwriter和filewriter对象?会留下不完整的文件。

ckx4rj1h

ckx4rj1h3#

你没有关闭和冲洗你的作家。如果你打电话给 close() 方法在代码结束时,将刷新缓冲区并关闭写入程序。
正如汉克·盖伊在评论中指出的那样 close() 方法可能会引发异常( IOException ,我相信)。这意味着您必须在一个小时内结束通话 try / catch 阻止。不过,我看到你的 main 方法抛出 Exception -这不是最好的做法,但它会阻止你需要一个 try / catch 在这个特定的示例中阻塞。

ygya80vv

ygya80vv4#

事实上,您应该始终关闭资源以刷新所有内容并释放资源。显式刷新不是必需的,因为它通常是在关闭时隐式完成的。只要在try-catch-finally块的finally块中调用closeable#close(),就可以了。
在javaio教程中了解更多信息。

相关问题