📜  Windows 文件存储 (1)

📅  最后修改于: 2023-12-03 15:05:57.749000             🧑  作者: Mango

Windows 文件存储

简介

Windows 文件存储包含了操作系统中处理文件和文件夹的所有功能。有很多方法和接口可以实现文件与文件夹的管理,其中 Windows API 是常用的方法之一。

Windows API

Windows API 包含了很多函数和接口,用于操作文件和文件夹。以下是一些常用的函数:

CreateFile

CreateFile 函数用于创建或打开一个文件。

HANDLE CreateFile(
  LPCTSTR               lpFileName,
  DWORD                 dwDesiredAccess,
  DWORD                 dwShareMode,
  LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  DWORD                 dwCreationDisposition,
  DWORD                 dwFlagsAndAttributes,
  HANDLE                hTemplateFile
);

其中,lpFileName 是文件名,dwDesiredAccess 是访问权限,dwShareMode 是共享模式,lpSecurityAttributes 是安全属性,dwCreationDisposition 是文件创建时的行为,dwFlagsAndAttributes 是文件属性和标志,hTemplateFile 是模板文件的句柄。

ReadFile

ReadFile 函数用于读取文件。

BOOL ReadFile(
  HANDLE       hFile,
  LPVOID       lpBuffer,
  DWORD        nNumberOfBytesToRead,
  LPDWORD      lpNumberOfBytesRead,
  LPOVERLAPPED lpOverlapped
);

其中,hFile 是文件句柄,lpBuffer 是读取数据的缓冲区,nNumberOfBytesToRead 是需要读取的字节数,lpNumberOfBytesRead 是实际读取的字节数,lpOverlapped 是重叠操作结构体。

WriteFile

WriteFile 函数用于写入文件。

BOOL WriteFile(
  HANDLE       hFile,
  LPCVOID      lpBuffer,
  DWORD        nNumberOfBytesToWrite,
  LPDWORD      lpNumberOfBytesWritten,
  LPOVERLAPPED lpOverlapped
);

其中,hFile 是文件句柄,lpBuffer 是写入数据的缓冲区,nNumberOfBytesToWrite 是需要写入的字节数,lpNumberOfBytesWritten 是实际写入的字节数,lpOverlapped 是重叠操作结构体。

SetFilePointer

SetFilePointer 函数用于设置文件指针。

DWORD SetFilePointer(
  HANDLE hFile,
  LONG   lDistanceToMove,
  PLONG  lpDistanceToMoveHigh,
  DWORD  dwMoveMethod
);

其中,hFile 是文件句柄,lDistanceToMove 是要移动的字节数,lpDistanceToMoveHigh 是高位的移动距离,dwMoveMethod 是移动的方式。

CloseHandle

CloseHandle 函数用于关闭一个对象的句柄。

BOOL CloseHandle(
  HANDLE hObject
);

其中,hObject 是对象句柄。

文件系统

Windows 文件系统采用了 NTFS 和 FAT32 两种文件系统。

NTFS

NTFS(New Technology File System)是一种高性能的文件系统,具有以下特点:

  • 支持大容量硬盘和文件。
  • 支持文件加密、压缩、权限分配等高级功能。
  • 支持事务日志,可以恢复数据。
FAT32

FAT32(File Allocation Table 32)是一种简单的文件系统,具有以下特点:

  • 可以在多个操作系统之间共享数据。
  • 支持文件备份。
  • 文件不会出现碎片。
结论

Windows 文件存储包含了丰富的 API 和文件系统,为开发人员提供了灵活的文件处理方法。在开发过程中,根据实际情况选择合适的方法和文件系统可以获得更好的效果。