C语言--I/O文件操作【下】

I/O文件操作

这是C提供的另一种文件操作,它是通过直接存/取文件来完成对文件的处理,而上篇所说流式文件操作是通过缓冲区来进行;流式文件操作是围绕一个FILE指针来进行,而此类文件操作是围绕一个文件的"句柄"来进行,什么是句柄呢?它是一个整数,是系统用来标识一个文件(在WINDOWS中,句柄的概念扩展到所有设备资源的标识)的唯一的记号。此类文件操作常用的函数如下表,这些函数及其所用的一些符号在io.h和fcntl.h中定义,在使用时要加入相应的头文件。

函数 说明
open() 打开一个文件并返回它的句柄
close() 关闭一个句柄
lseek() 定位到文件的指定位置
read() 块读文件
write() 块写文件
eof() 测试文件是否结束
filelength() 取得文件长度
rename()
chsize() 改变文件长度

open()

  • 功能
      打开一个文件并返回它的句柄
  • 原型
  int open(const char *path, int access [, unsigned mode]); 
          path是要打开的文件名,
          access是打开的模式,
          mode是可选项: 表示文件的属性,主要用于UNIX系统中,在DOS/WINDOWS这个参数没有意义。其中文件的打开模式如下表。
符号 含义
O_RDONLY 只读方式
O_WRONLY 只写方式
O_RDWR 读/写方式
O_NDELAY 用于UNIX系统
O_APPEND 追加方式
O_CREAT 如果文件不存在就创建
O_TRUNC 把文件长度截为0
O_EXCL 和O_CREAT连用 如果文件存在返回错误
O_BINARY 二进制方式
O_TEXT 文本方式

对于多个要求,可以用"|"运算符来连接,如O_APPEND|O_TEXT表示以文本模式和追加方式打开文件。

例:int handle=open("c://msdos.sys",O_BINARY|O_CREAT|O_WRITE) 

详细: https://baike.baidu.com/item/open/13009226?fr=aladdin
  • 返回值
    失败:将返回一个小于0的值
    成功:返回0;

close()

  • 功能
    关闭一个句柄,即关闭打开的 TextStream 文件。
  • 原型
    int close(int handle)
  • 返回值
    失败:将返回一个小于0的值;
    成功:返回0;

lseek()

  • 头文件
    #include <sys/types.h>
    #include <unistd.h>
  • 功能
    定位到指定的位置
  • 原型
           long lseek(int handle, long offset, int fromwhere);
                     offset是移动的量,
                     fromwhere是移动的基准位置,取值和前面讲的fseek()一样,
                          SEEK_SET:文件首部;
                          SEEK_CUR:文件当前位置;
                          SEEK_END:文件尾。
    
  • 返回值
    此函数返回执行后文件新的存取位置。
 例: 
  lseek(handle,-1234L,SEEK_CUR);//把存取位置从当前位置向前移动1234个字节。 
  x=lseek(hand1e,0L,SEEK_END);//把存取位置移动到文件尾,x=文件尾的位置即文件长度

read()

  • 功能
    从文件读取一块数据
  • 原型
    int read(int handle, void *buf, unsigned len);
            buf保存读出的数据,
            len是读取的字节。
  • 返回值
    函数返回实际读出的字节。
 例:char x[200];
 read(hnd1,x,200);

write()

  • 功能
    写一块数据到文件中,
  • 原型
int write(int handle, void *buf, unsigned len);
         buf保存写入的数据,
         len是写入的字节。
  • 返回值
    返回实际写入的字节。
  例:char x[]="I Love You";
      write(handle,x,strlen(x)); 

eof()

  • 功能
    类似feof(),测试文件是否结束
  • 返回值
    是返回1,否则返回0;
  • 原型
    int eof(int handle);
例:while(!eof(handle1))
    {……}; 

filelength()

  • 功能
    返回文件长度
  • 原型
    long filelength(int handle);
    相当于lseek(handle,0L,SEEK_END)

例:long x=filelength(handle);

rename()

  • 功能
    重命名文件
  • 原型
    int rename(const char *oldname, const char *newname); 
          oldname是旧文件名,
          newname是新文件名。
  • 返回值
    成功:返回0。
    失败:返回小于0值。

例:rename(“c://config.sys”,“c://config.w40”);

chsize();

  • 功能
    改变文件长度
  • 原型
    int chsize(int handle, long size);
        size表示文件新的长度,
    
  • 返回值
    成功返回0,
    否则返回-1,如果指定的长度小于文件长度,则文件被截短;如果指定的长度大于文件长度,则在文件后面补’/0’。

例:chsize(handle,0x12345);

学习:https://www.cnblogs.com/MrYuan/p/5383408.html

猜你喜欢

转载自blog.csdn.net/qq_41498261/article/details/83274409