两种文件修改的方式

来源:互联网 发布:假面骑士空我 知乎 编辑:程序博客网 时间:2024/05/21 06:19

一、文件映射

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

  • 使用内存映射文件读写文件的具体过程可以这样:
    (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
      传入文件描述符,关闭文件句柄
  • 函数使用:
    上述几个函数搭配使用,很简单。但和文件映射相比,想要查看文件内容的话必须创建字符串来接受文件内容。

三、参考资料

  • http://blog.csdn.net/marryshi/article/details/40888865
  • MSDN
原创粉丝点击