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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值