首页 > 其他 > 详细

文件IO操作

时间:2021-05-13 01:05:56      阅读:18      评论:0      收藏:0      [点我收藏+]

1.创建文件

#include <fcntl.h>

int creat(const char* path, mode_t mode);

path:文件路径。可以是绝对路径,也可以是相对路径。

mode:创建模式,指定用户操作权限(针对三种用户设置:所处用户,所处用户组,其他用户。权限:读,写,执行)

(0表示没有任何权限

     S_IRUSR可读,1

     S_IWUSR可写,2

     S_IXUSR可执行,4

    S_IRWXR可读、写、执行)7(也可以用数字代替,如0777)

返回值:文件描述符,值为一个整数,发生错误时返回-1。

例子:

int fd = creat("./test.txt", 0777);

 

2.关闭文件

 

#include <fcntl.h>

int close(int fd);

当关闭一个文件会释放该进程加在该文件上的所有记录锁。当进程终止时会关闭本进程打开的所有文件。

3.文件偏移量

每一个已打开的文件都有一个读写位置, 当打开文件时通常其读写位置是指向文件开头, 若是以附加的方式打开文件(如O_APPEND), 则读写位置会指向文件尾. 当read()或write()时, 读写位置会随之增加.

off_t lseek(int fd, off_t offset, int whence);

函数说明:
函数用来控制该文件的读写位置. 参数fd为已打开的文件描述词, 参数offset 的解释与whence有关:

参数 whence 为下列其中一种:

SEEK_SET:将该文件的偏移量设置为距文件开始处offset个字节的位置。

SEEK_CUR:将该文件的偏移量以目前的读写位置往后增加offset 个位移量。(offset可正可负)

SEEK_END:将读写位置指向文件尾后再增加offset 个位移量。(offset可正可负)

返回值:当调用成功时则返回目前的读写位置, 也就是距离文件开头多少个字节. 若有错误则返回-1, errno 会存放错误代码。

说明:

  • 不允许lseek()对管道,FIFO,网络套接字作用, 此项动作会令lseek()返回ESPIPE。
  • 大多数文件不允许有负的文件偏移量,但也有少部分设备支持负的偏移量。
  • 文件偏移量可以大于当前文件的长度,在这种情况下,下一次写改文件将对文件进行加长,并在文件中形成一个空洞,这样会占用更多的磁盘空间。

4.读文件

ssize_t read(int fd, void* buf, size_t nbytes);

函数说明:

fd:已经打开的文件句柄。

buf:要读的缓冲区。

nbytes:缓冲区大小。

返回值:实际读取到的字节数,到达文件尾返回0,出错则返回-1。

文件IO操作

原文:https://www.cnblogs.com/jzy-lj/p/14762523.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!