两种文件修改的方式

文件映射与文件指针

一、文件映射

  • 不得不说利用文件映射对文件进行读写操作是非常方便的,因为可以像操作内存一样使用指针读写任意内容,前提是要将安全属性置为可读可写。利用文件映射进行写操作时内存和文件时同步的,修改内存内容的同时也会修改文件内容。

  • 使用内存映射文件读写文件的具体过程可以这样:
    (1)调用CreateFile函数打开想要映射的文件,得到文件句柄hFile。该函数是没有文件时创建问件,有文件时创建问件
    (2)调用CreateFileMapping函数,并传入文件句柄hFile,为该文件创建一个内存映射内核对象,得到内存映射文件的句柄hMap。
    (3)调用MapViewOfFile函数映射整个文件或一部分到进程的虚拟地址空间。该函数返回文件映射到内存后的起始地址。使用指向这个地址的指针就可以读取文件的内容了。调试时可以在内存窗口看一下内容。
    (4)调用UnmapViewOfFile函数来解除文件映射。
    (5)调用CloseHandle函数关闭文件对象,必须传入内存映射文件句柄hMap
    (6)调用CloseHandle函数关闭文件对象,必须传入文件句柄hFile。

二、文件指针

  • 要用到的函数
    _open、_lseek、_write,_read和_close
  • 函数的说明
    • _open
      根据文件名打开文件,返回int型的文件句柄,也就是文件描述符。文件描述符是系统内核中文件索引
    • _lseek
      传入_open返回的int型文件描述符和文件偏移,将文件指针定位到偏移处
    • _read
      传入文件描述符和字符串指针以及读取内容大小,将读取的内容写进字符串指针指向的字符串中
    • _write
      传入文件描述符以及源串指针和要写入的长度,写入位置为经由_lseek设置的文件指针定位的地方
    • _close
      传入文件描述符,关闭文件句柄
  • 函数使用:
    上述几个函数搭配使用,很简单。但和文件映射相比,想要查看文件内容的话必须创建字符串来接受文件内容。

三、参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值