攀升·Uranus


Something Different,Something New
数据加载中……

fopen打开文件方式

     最近写一个文件操作类,fopen的参数着实让我搞了半天,因为以前就是固定的方式读写文件的,现在要做灵活了,所以就有些参数理解不够准确。以下是关于mode参数的定义。

'r' 只读方式打开,将文件指针指向文件头,如果文件不存在,则File返回空。
'r+' 读写方式打开,将文件指针指向文件头,如果文件不存在,则File返回空。
'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE。
'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE。
'b' 使用字符b作为文件类型的判断,是否是binary文件。

还有在读文件时最好先判断下该文件是否存在
bool ClassA::IsFileExisted(const char* filePath)
{
   struct stat info;
   if(stat(filePath, &info) != 0)
   {
      return false;
   }
   else
      return true;
}

posted on 2008-12-25 12:40 攀升 阅读(6077) 评论(5)  编辑 收藏 引用 所属分类: Linux

评论

# re: fopen打开文件方式  回复  更多评论   

PathFileExists一个函数搞定文件是否存在
2008-12-25 18:49 | NeverGone

# re: fopen打开文件方式  回复  更多评论   

PathFileExists是Windows API吧,如果不是Windows,就不好使了吧,呵呵
2008-12-25 19:00 | diverger

# re: fopen打开文件方式  回复  更多评论   

@NeverGone

不好意思,我忘记说开发环境了,我是在Linux上开发。
2008-12-25 22:25 | 攀升

# re: fopen打开文件方式  回复  更多评论   

@攀升
可以用access()判断文件存在性和访问权限,不需要额外的结构体。
2010-01-13 15:59 | SonicLing

# re: fopen打开文件方式  回复  更多评论   

@SonicLing
哦,谢谢你的提醒
2010-01-14 10:52 | 攀升

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理