为什么我正在创建的文本文件中缺少最后几行?



我有一个函数,可以创建 7 个带有数据行的不同文本文件。 然后使用以下函数将这 7 个文件合并为不同函数中的单个文件:

public void createSingle683File(int groupNumber, FileWriter wr){
        try{
            if(new File(printDir+"683_"+groupNumber+".txt").exists()){
                File f683 = new File(printDir+"683_"+groupNumber+".txt");
                BufferedReader input = new BufferedReader(new FileReader(f683));
                String line = null;
                while ((line = input.readLine()) != null){
                    //write contents of existing file to new file
                    wr.write(line+"n");
                }
                //close bufferedInput
                input.close();
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }

调用代码:

    File fileHandle683 = new File(printDir+"683.txt");
                FileWriter wr683 = new FileWriter(fileHandle683);
                for (int groupNumber = 1; groupNumber < 8; groupNumber++){
                    createSingle683File(groupNumber,wr683);
                }
.
.
.
.
.//stuff
wr683.close();
唉,最后的 683.txt 在第

50 个文件 (683_7.txt) 中缺少大约 7 行,我不知道为什么。 它始终且仅是最终文件的最后几行丢失。 我不知道我是要尽快关闭缓冲区输入还是什么。

任何想法将不胜感激。 我可以非常快速地测试任何想法。

谢谢!

您是否在该 FileWriter 实例上调用flush()和/或close()

我没有看到你在哪里关闭wr683.我怀疑当进程关闭时,数据被留在缓冲区中。至少打电话给flush().

当前未关闭最终文件的文件编写器。因此,您当前缺少的内容可能仍在流 I/O 的缓存中。因此,关闭最终文件的 FileWriter 实例并查看文件的内容。

因此,在 for 循环之后,您只需输入

wr683.close();

希望对您有所帮助。

相关内容

  • 没有找到相关文章

最新更新