文件操作 之 C实现

判断文件访问权限

头文件 <io.h>

int _access(const char *path,int mode ); 
int _waccess(const wchar_t *path,int mode );
返回0成功,-1 失败
mode:
00 只检查文件是否存在 F_OK
01  是否有执行权限 X_OK
02 写权限 W_OK
04 读权限 R_OK
06 读写权限 W_OK|R_OK

读写文件

头文件<stdio.h>
//fsopen()文件共享,fopen_s()直接返回错误码,但不适用共享模式
打开文件

//获取文件指针
FILE *pFile = fopen("1.txt", //打开文件的名称,绝对路径或者相对路径
                    "w"); // 文件打开方式 如果原来有内容也会销毁

向文件写数据

fwrite ("hello", //要输入的文字
         1,//文字每一项的大小,这里是字符型的就设置为1,如果是汉字就设置为4
         strlen("hello"), //单元个数 我们也可以直接写5
         pFile //我们刚刚获得到的文件指针
         );

关闭文件

fclose(pFile); //告诉系统我们文件写完了数据更新,但是我们要要重新打开才能在写

刷新缓存,将缓存中的数据写入文件

fflush(pFile); //数据刷新 数据立即更新

读文件流程

FILE *pFile=fopen("1.txt","r"); //获取文件的指针
char *pBuf;  //定义文件指针
fseek(pFile,0,SEEK_END); //把指针移动到文件的结尾 ,获取文件长度
int len=ftell(pFile); //获取文件长度
pBuf=new char[len+1]; //定义数组长度
rewind(pFile); //把指针移动到文件开头 因为我们一开始把指针移动到结尾,如果不移动回来 会出错
fread(pBuf,1,len,pFile); //读文件
pBuf[len]=0; //把读到的文件最后一位 写为0 要不然系统会一直寻找到0后才结束
MessageBox(pBuf);  //显示读到的数据
fclose(pFile); // 关闭文件

删除文件

remove()函数用于删除指定的文件,其原型如下:
int remove(char * filename);
成功返回 0

文件或目录重命名

int rename(const char *old_filename, const char *new_filename)
如果成功,则返回零。如果错误,则返回 -1,并设置 errno。

说明:
重命名文件:
如果newname指定的文件存在,则会被删除。
如果newname与oldname不在一个目录下,则相当于移动文件。

重命名目录:
如果oldname和oldname都为目录,则重命名目录。
如果newname指定的目录存在且为空目录,则先将newname删除。
对于newname和oldname两个目录,调用进程必须有写权限。
重命名目录时,newname不能包含oldname作为其路径前缀。例如,不能将/usr更名为/usr/foo/testdir,因为老名字( /usr/foo)是新名字的路径前缀,因而不能将其删除。

创建文件类型参数

“rt” 只读打开一个文本文件,只允许读数据 
“wt” 只写打开或建立一个文本文件,只允许写数据 
“at” 追加打开一个文本文件,并在文件末尾写数据 
“rb” 只读打开一个二进制文件,只允许读数据 
“wb” 只写打开或建立一个二进制文件,只允许写数据 
“ab” 追加打开一个二进制文件,并在文件末尾写数据 
“rt+” 读写打开一个文本文件,允许读和写 
“wt+” 读写打开或建立一个文本文件,允许读写 
“at+” 读写打开一个文本文件,允许读,或在文件末追加数据 
“rb+” 读写打开一个二进制文件,允许读和写 
“wb+” 读写打开或建立一个二进制文件,允许读和写 
“ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据

r(read): 读
w(write): 写
a(append): 追加
t(text): 文本文件,可省略不写
b(banary): 二进制文件
+: 读和写

总结
在这里插入图片描述

程序退出
Exit()函数返回0,表示正确推出,其他参数错误退出,返回到操作系统

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章