文章目录
一、文件基本操作
1、文件与目录的检测与创建文件ls、touch
ls查看文件或者是目录的相关信息(非隐藏文件的文件名,以文件名进行排序及文件名代表的颜色显示如此)。 -l长数据串行出,包含文件的属性与权限等等数据,-a全部的文件连同隐藏文件一起列出来,-d 仅列出文件本身,而不列出目录内的文件数据。
touch创建一个空的文件,用法:touch 文件名
2、拷贝,删除与移动cp、rm、mv
拷贝指令cp,使用格式:cp 来源文件 目标文件,删除指令rm,使用格式:rm 文件名,mv指令有两个功能:移动文件或目录,或更名,第一个用法:mv 待操作文件 目标文件,第二个用法:mv 文件原名 文件新名。
3.文件内容查阅cat:cat是将一个文件的内容连续打印到屏幕上
二、文件的编程操作
1、文件的打开及创建函数
打开函数open
int open(const char *pathname,int flags);
int open(const char *pathname,int flags,mode_t mode);
pathname:要打开的文件名(含路径,缺省为当前路径)
flags:
O_RDONLY只读打开
O_WRONLY只写打开
O_RDWR可读可写打开
以上三个常数只能制定一个,下列常数是可选择的(不同常数之间用 | 隔开)
O_CREAT
若文件不存在则创建它,使用此选项,需要同时说明第三个参数mode,用其说明该新文件的存取许可权限
O_EXCL
如果同时指定了OCREAT,而文件已经存在,则出错
O_APPEND
每次写时都加到文件的尾端
O_TRUNC
属性去打开文件时,如果这个文件中本来是有内容的,而且为只读或只写成功打开,则将其长度截短为0
创建函数create
int creat(const char *filename,mode_t mode);
filename:要创建的文件名(包含路径、缺省为当前路径)
mode:创建模式(可读可写可执行)
常见创建模式:
宏表示 数字
S_IRUSR 4 可读
S_IWUSR 2 可写
S_IXUSR 1 可执行
S_IRWXU 7 可读,写,执行
open和create都有一个整形返回值,这个返回值称为文件描述符,这个文件描述符非常重要,用于下一步作为写和读函数的参数,每一个进程对应一个描述符,进程不同描述符不同
2、文件的写入函数write
ssize_t write(int fd,const *buf,size_t,count);
fd:文件描述符来自于open或creat的返回值
buf:需要写入的字符串内容
size_t:每次写入的字节大小
返回值
成功:返回写入的字节数
失败:返回-1并设置errno
ps: 写常规文件时,write的返回值通常等于请求写的字节
数count, 而向终端设备或者网络写时则不一定
3、文件的读取函数read
ssize_t read(int fd,void*buf,size_t count)
fd: 是文件描述符, 从command line获取数据时,为0
buf: 为读出数据的缓冲区;
count: 为每次读取的字节数(是请求读取的字节数,读上来的数据保
存在缓冲区buf中,同时文件的当前读写位置向后移)
返回值
成功:返回读出的字节数
失败:返回-1,并设置errno,如果在调用read
之前到达文件末尾,则这次read返回0
4、文件光标的移动函数lseek
off_t lseek(int fildes, off_t offset, int whence);
fd:文件描述符
off_offset:offset 为根据参数whence来移动读写位置的位移数
offset为正数时向右移动,为负时向左移动
whence的种类
SEEK_SET 指向文件的头
SEEK_CUR 指向文件当前位置
SEEK_END 指向文件的尾
欲将读写位置移到文件开头时:lseek(int fildes, 0, SEEK_SET);
欲将读写位置移到文件尾时:lseek(int fildes, 0, SEEK_END);
想要取得目前文件位置时:lseek(int fildes, 0, SEEK_CUR);
求文件大小特别方法
int sizefile;
sizefile = lseek(fd,0,SEEK_END);
5、文件的关闭函数close
int close(int fd);
打开的文件一定要记得关闭,可以节约内存占用