Linux文件操作及编程

一、文件基本操作

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);

打开的文件一定要记得关闭,可以节约内存占用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值