文件操作相关命令
文件读写操作命令:
命令 | 作用 |
---|---|
fcntl | 文件控制 |
open | 打开文件 |
creat | 创建新文件 |
close | 关闭文件描述字 |
read | 读文件 |
write | 写文件 |
readv | 从文件读入数据到缓冲数组中 |
writev | 将缓冲数组里的数据写入文件 |
pread | 对文件随机读 |
pwrite | 对文件随机写 |
lseek | 移动文件指针 |
dup | 复制已打开的文件描述字 |
dup2 | 按指定条件复制文件描述字 |
flock | 文件加/解锁 |
poll I/O | 多路转换 |
truncate / ftruncate | 截断文件 |
umask | 设置文件权限掩码 |
fsync | 把文件在内存中的部分写回磁盘 |
文件系统操作命令:
命令 | 作用 |
---|---|
access | 确定文件的可存取性 |
chdir / fchdir | 改变当前工作目录 |
chmod / fchmod | 改变文件方式 |
chown / fchown / lchown | 改变文件的属主或用户组 |
chroot | 改变根目录 |
stat / lstat / fstat | 取文件状态信息 |
statfs / fstatfs | 取文件系统信息 |
readdir | 读取目录项 |
getdents | 读取目录项 |
mkdir | 创建目录 |
mknod | 创建 索引节点 |
rmdir | 删除目录 |
rename | 文件改名 |
link | 创建链接 |
symlink | 创建符号链接 |
unlink | 删除链接 |
readlink | 读符号链接的值 |
mount | 安装文件系统 |
umount | 卸下文件系统 |
ustat | 取文件系统信息 |
utime | 改变文件的访问修改时间 |
相关函数
- fopen
FILE* fopen(const char *path, const char* mode);
//path: 带路径的文件名.
//mode: 输出方式:"r,"r+","w","w+","a","a+","b"
mode | 作用 |
---|---|
r | 只读,若文件不存在则报错返回。 |
r+ | 可读可写,若文件不存在则报错返回。 |
w | 只写,若文件不存在,创建一个新文件,写入文件;若文件存在,清空该文件原有内容,再写入。 |
w+ | 可读可写,若文件不存在,创建一个新文件,写入文件;若文件存在,清空该文件原有内容,再写入。 |
a | 追加只写,总是将数据(文件:追加到文件输入的位置但默认在文件末尾)追加在文件末尾,文件不存在则创建。 |
a+ | 追加可读可写,总是将数据(文件:追加到文件输入的位置但默认在文件末尾)追加在文件末尾,文件不存在则创建。 |
b | 读文件数据并按原始的二进制操作。 |
- fread
size_t fread(const void* ptr, size_t size, size_t nmemb , FILE* stream );
//ptr: 传入存放读取到的数据的缓冲区首地址。
//size: 块大小。
//nmemb: 块个数(块个数x块大小=要写入数据的总长度)。
//stream: fopen返回的操作句柄。
//返回值: 成功返回完整读取到的块个数,出错返回0。文件读取到末尾,也返回0。
//为了判断是否出错,还是读取到文件末尾必须要使用的接口:
int feof( FILE* stream); //判断是否读取到文件末尾。
int ferror( FILE* stream); //判断是否出错。
建议: fread读取数据的时候,块大小设置为1,块个数设置为长度。
- fseek
int fseek( FILE* stream, long offset, int whence);
//stream: 文件操作句柄;
//offset: 偏移量;
//whence: 偏移的相对起始位置;
//返回值: 成功返回0,错误返回1;
- demo
#include<stdio.h>
#include<string.h>
int main(int argc,char*argv[])
{
FILE *fp = fopen("test.txt", "w+");
if(fp == NULL){
perror("fopen error");
return -1;
}
char *ptr = "insist your dream ~\n";
int ret = fwrite(ptr, strlen(ptr), 1, fp);
if(ret == 0){
perror("fwrite error");
return -1;
}
fseek(fp, 0, SEEK_SET);
char buf[1024] = {0};
ret=fread(buf, 1, 100, fp);
if(ret == 0){
if(feof(fp)){
printf("end of file\n");
}
if(ferror(fp)){
perror("error of read");
}
}
printf("%d-%s\n", ret, buf);
fclose(fp);
return 0;
}
好了,欢迎大家前来评论,共同进步。