Linux下的一些文件操作
来源:互联网 发布:征管基础数据核实表 编辑:程序博客网 时间:2024/06/06 01:25
1.系统调用、库函数
1.1 系统调用
系统调用实际上就是指最底层的一个调用,在linux程序设计里就是底层调用的意思。面向的是硬件。
系统调用提供的函数如open, close, read, write, ioctl等,需包含头文件
1.2 库函数
库函数调用则面向的是应用开发的,相当于应用程序的api,采用这样的方式有很多种原因。
第一:双缓冲技术的实现。
第二,可移植性。
第三,底层调用本身的一些性能方面的缺陷。
第四:让api也可以有了级别和专门的工作面向。
库函数对文件的操作实际上是通过系统调用来实现的。例如C库函数fwrite()就是通过write()系统调用来实现的。
库函数调用是系统无关的,因此可移植性好。
2.标准IO
2.1 文件指针FILE*
可用于定义文件指针FILE *fp;
2.2 文件打开
打开一个文件,使用fopen()函数
fp = fopen(filename,mod);
第一个参数为文件名或者路径
第二个参数为打开的方式
打开成功返回文件指针,失败返回NULL。
常用的打开方式有:
“r”:只读 “w”:只写 “a“:在行末追加数据 ”rb":以二进制的方式只读“wb”:以二进制的方式只写
3.文件IO
3.1 文件描述符int fd
可用于表示一个文件描述符,int类型
3.2 文件打开
使用open()的系统调用,无缓冲空间,速度慢,但是存储及时
fd = open(filename,mod);
第一个参数为文件名
第二个参数为打开方式
打开失败返回-1
常用的打开方式有:
O_RDONLY:只读O_WRONLY:只写O_RDWR:可读可写O_APPEND:追加O_CREAT:不存在就创建不同的方式之间用|连接特殊的文件描述符:标准输入输出:STDIN_FILENO,STDOUT_FILENO,值分别是0,1
3.3 文件读写
write(fd,buff,sizeof(buff));
参数分别为,文件描述符,字符串,要写入数据的字节数
read(fd,buff,sizeof(buff));
参数相同,不过将写变为读,返回值为读到的字符个数
4.目录操作
4.1 常用的linux命令用于操作目录
mkdir:创建目录 如:mkdir aaa/pwd:显示当前工作目录ls:显示当前目录下的文件和文件夹 -a显示所有文件 -l显示详细信息 会显示文件属性cd:进入目录tree:显示文件目录树 -L:显示访问级别 如-L1只显示一级目录mv:移动文件,文件夹或者改变名字cp:拷贝文件或者文件夹到某个目录
5.文件属性
5.1 使用ls -l查看会显示每个文件或者文件夹的属性
如某文件显示属性为:
d 文件类型 rwx 拥有者权限 r-x 拥有组权限 r-x 其他人权限 2 pi 拥有者 pi 拥有组
文件类型共有三种:-:普通文件 d:目录文件 p:设备文件
权限分别代表:r:读 w:写 x:操作 实际是用三位二进制来表示,权值分别为421,总大小为7
5.2 chmod这个命令,可以用于改变文件的权限
如:chmod -w x:可以取消对x目录的写的权限(默认对于当前用户来说)
或者:chmod 777 x:赋予所有用户对x文件的所有权限
5.3 掩码umask
可以用于决定在创建文件时的初始权限默认为0022 。
八进制,后三位就是文件的权限了 0022 为0000 0000 0010 0010 1代表没有权限。
所以对于默认创建的文件来说,用户组和其他用户没有写的权限。
可用umask 命令来改变掩码的值。
- linux下的一些文件操作函数
- Linux下的一些文件操作
- Linux下的一些操作
- linux文件的一些操作
- Linux下一些文件操作和一些简单命令的自己实现
- Linux下的文件操作
- linux 下的文件操作
- Linux 下的文件操作
- linux下的文件操作
- linux下的文件操作
- LINUX下的文件操作
- VC下:文件操作的一些API
- Linux下一些操作
- linux下一些操作
- linux下mysql的一些基本操作
- Linux下Mysql的一些操作
- Linux 下一些常用的操作(Ubuntu)
- linux下mysql的一些基本操作
- C++ 中vector的使用方法
- BZOJ1342 单调队列
- Java:输出学生信息(继承和多态)
- 计算圆和长方形的面积
- Python 爬虫
- Linux下的一些文件操作
- 各OJ分类
- RocketMQ实战(四)
- JESD204
- linux在contos中使用yum安装jdk
- CCF201604-2 俄罗斯方块 Java
- 1001. A+B Format (20)
- org.apache.jasper.JasperException: org.apache.jasper.JasperException: java.lang.ClassNotFoundExcepti
- 博弈论基础