Golang程序在写入完成之前关闭文件

时间:2017-03-09 16:59:54

标签: go writer

我已经为我的云计划实现了自定义写入界面。 到目前为止,我的问题是,在我完成将文件复制到我的编写器并关闭Writer之后,编写器仍然有一些写操作(通常可能有4个写操作,大约每个4096字节)。最后一次写入通常少于4096次。

这还没有发生但是我知道最后一次写入是4096字节并且我的程序不会终止的概率为1/4096。

我正在使用它来进行压缩程序,并且io.EOF无效,因为每个写入块都有一个,同时检查编写器是否关闭过早,而仍有一些写入要做。

处理这种情况的最佳方法是什么?

*** ***** EDIT 我最终实现了一个更强大的Write(),Flush()和Close()方法。现在一切都很好,如果我使用延迟Close()但如果我在最后手动调用Close()仍然会遇到同样的问题

2 个答案:

答案 0 :(得分:0)

由于您可以完全控制作者,因此您可以使用waitgroupmain等待所有goroutines完成。

答案 1 :(得分:0)

通过实现更强大的Close()函数解决了问题。我还使用defer Close()来确保Golang在内部处理所有Goroutines。