编程时我经常打开和关闭文件。我知道在打开文件时,检查错误是否确实是否确实打开是很重要的。虽然关闭文件时会出现问题,但我不知道某个实例(除非打开文件确实出错并且未经检查)。
我目前正在编程,在os
包下,.Close()
函数可以在需要时返回错误。我知道在C ++中这也是可能的。
最后,我的问题是在尝试关闭文件时会出现什么情况会导致错误?
答案 0 :(得分:7)
是。关闭文件可能会导致错误/失败。例如,请参阅close(3)
可以返回的错误 - http://linux.die.net/man/3/close - 文件系统损坏等问题是可能的原因。
除了记录错误并且知道您的数据可能已被搞砸(取决于错误)之外,您通常无法真正做很多事情 - 您可以很少“修复它”,除非可能在某处重新编写数据否则如果你还有它等等。
您正在使用的语言(Go,C ++,无论)无关紧要。如果文件系统已满,损坏或者有人物理地撕掉了硬盘驱动器,那么你的编程语言就无法保存,关闭将会失败,任何人都可以猜测你的数据是否安全存储在某处。
答案 1 :(得分:4)
在操作系统级别,关闭文件时也会出现问题,特别是如果您已写入文件(即缓冲问题,磁盘空间不足,介质已移除等等)。
C ++ fstream
有一个void close()
函数,它不会返回任何内容。原则是,一旦你调用close,你就不能再使用该流是否有错误。但是,当发生关闭错误时,会设置失败位,以便可以检测到它,并且可以通常的方式检索错误代码。
C fclose()
会返回int
,显示是否有错误。如果您想知道它失败的原因,您必须获取并分析errno
错误代码。它不像自由函数那样自我解释,但是在这里,你不能在结束通话后再使用FILE *,无论是否有错误。