linux的文件和目录操作函数
只说有哪些,和怎么样用这些基础的函数,头文件这里就不打了,到时看有哪些满足你的需求搜就好了,其中的操作分为缓冲操作和非缓冲操作。
文件目录的操作,以文件目录指针为主的缓冲操作
chmod(文件或目录的录取或名字,权限)
改变文件或目录的权限
文件
文件打开与关闭
对一个文件进行操作,我们首要的就是打开一个文件,不然怎么进行操作呢?
文件指针,一个用来指向文件的指针,其也代表了这个文件,我们通过这个文件指针对文件进行各种操作。
怎么定义一个文件指针?
FILE *p 这里的p就是一个文件指针。用法就是,FILE *变量名
如何打开一个文件?
fopen(文件的路径或他的名字,打开的模式)
打开成功,这个函数会返回一个文件指针代表了你打开的的那个文件,这个模式有很多种,只读,只写或只读写,这些可以上网看看。打开失败返回NULL
打开了一个文件操作完之后就要关闭一个文件
fclose(文件指针)
关闭成功返回0,失败返回-1
文件的读写
我们读写的时候是按文件内读写点
1,普通的读写:
读是fread
fread(存放要读出来内容的地方,一个字节的大小,要读多少个字节,文件指针)
成功了返回读了多少字节的数值,失败返回-1,
写是fwrite
**fwrite(**存放要写到文件里内容的地方,一个字节的大小,要读多少个字节,文件指针)
成功了返回写了多少字节的数值,失败返回-1
2,格式化读写:
3,单个字符读写:
4,字符串读写:
这几个这个不常用,知道有这个就可以了,可以搜,
这里还有标准输出输入流的知识,stdin标准输入,stdout标准输出,stderr标准出错,都是FILE类型的,配合fread,fwrite使用,
stdin作为fread的文件指针,代表了从键盘读取
stdout作为fwrite的文件指针,代表了输出到屏幕
stderr是标准出错,和stdout都是输出到屏。
文件读写点的定位和操作
feof(文件指针)
判断读写点是否在文件的末尾,每执行一次就会使读写点向后一位,知道末尾
fseek(文件指针,偏移基准位置的长度,基准位置)
这个设置读写点的函数,成功返回0,失败返回-0
这个基准位置可以是
SEEK_SET–文件开头
SEEK_CUR–文件当前位置
SEEK_END–文件末尾
ftell(文件指针)
返回一个数值
rewind(文件指针)
将文件的读写点移动到开头
目录也就是文件夹
对目录的操作
getcwd(存放目录路径的地方,地方的大小)
获取当目录的路径,放到一个地方
chdir(某个目录的路径)
将工作目录切换到某个目录的路径。
mkdir(目录的路径或名字,目录的权限)
创建目录
rmdir(目录的路径或名字)
删除目录
打开和关闭目录
DIR *p这是定义一个目录指针,与文件类似的。
opendir(目录的名字或路径)
成功返回一个目录指针,失败NULL
closedir(目录的名字或路径)
目录的读取
我们需要先定义一个用来存放读取信息的结构指针
struct dirent 结构名
这里的struct dirent结构在头文件已经定义好了,直接struct dirent 结构名即可,这样才能用readdir
readdir(目录的名字或路径)
阅读目录,记录目录的信息
seekdir(目录的名字或路径,偏移基准位置的多少,基准位置),其与fseek一样的。
telldir(目录的名字或路径)与ftell一样
文件目录的操作,以文件描述符为主的非缓冲操作
结构体变记录文件保持这个文件的相关信息,打开了多个文件,会构成结构体数组,每个下标代表了一个文件描述符。
文件的打开关闭
open(文件的路径或者名字,以什么样的方式打开文件flags,权限)
这个标志可以上网搜索,他也可以创建文件,这里会返回一个文件描述符
close(文件描述符)
关闭文件
读写
read(文件描述符,放置读出来内容的地方,读多少)
读文件,把内容放在一个地方
write(文件描述符,放置要写入内容的地方,写多少)
根据一个地方的内容,写到文件
改变文件大小
ftruncate(文件描述符,大小)
文件内读写的定位
lseek(文件描述符,偏移基准位置的长度,基准位置)
这个设置读写点的函数,成功返回0,失败返回-0,和前面一样
原子操作
pread、pwrite。具体上网搜索
文件描述符
文件描述符实则是系统分配的一个数值,我们可以将其直接使用。
我们可以复制文件描述符,有两个函数,dup,dup2
dup(旧的文件描述符)
返回一个新的文件描述符,其为系统随机分配,这两个同时指向一个文件,当其中一个文件描述符关闭后,文件并不会关闭,只有两个全部关闭。文件才会关闭。
dup2(旧的文件描述符,新的文件描述符)
返回一个新的文件描述符和后面的一样,不由系统随机分布了
获取文件信息
stat(文件名,结构的指针)
fstat(文件描述符,结构的指针)
这个stat结构已经定义好了,我们只需赋予指针即可
struct stat 名字
有了这个结构体的信息我们就可以使用一些函数来判断
文件的类型等。
还有一个函数
access(文件的名字或者路径,要检查的权限)
可以又来检验一个文件是否有权限。
文件的锁定
fcntl(文件描述符,cmd指令,文件锁信息的结构体)
这个cmd也有3个
时间相关的
在Linix系统中,这个标准时间点是1970年1月1日00:00:00。用time_t这种数据类型来表示从那一刻到现在所经过的秒数。
time_t p 创建时间数据类型p
gmtime(时间类型的变量);
转化为格林威治时间
**localtime(**时间类型的变量);
转化为本地时间
都是返回一个保存时间的变量体