18.5 在C语言中,怎样检验文件是否存在?

要做到可靠而可移植的检验出乎意料的困难。

如果从你检验到你打开文件前,这个文件被(别的进程) 生成或删除了, 所做的任何检验都会失效。

三个可能用作检验的函数是stat(), access() 和fopen()。

当使用fopen() 作近似检验时, 用只读打开, 然后马上关闭, 但是失败并不代表不存在。

这里, 只有fopen() 据有广泛的可移植性, 如果系统提供access, 而程序用了Unix 的UID 设置特性, 要特别小心使用。

不要去预测像打开文件这类操作是否成功, 通常直接尝试再查验返回值会更好, 如果失败了再申诉。

当然, 如果你要避免复写已存在的文件, 这个方法并不适用, 除非打开文件有象O EXCL 的参数, 那就可以做到你所要的效果。

永不止步步 发表于01-18 10:00 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363791个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号