windows文件系统

tech2022-08-25  109

1、文件系统

文件系统是操作系统用于管理磁盘上文件的方法和数据结构。

2、卷相关的API

获取卷

GetLogicalDrives()

获取一个卷的盘符的字符串

GetLogicalDriveStrings()

获取卷的类型

GetDriveType()

获取卷的信息

GetVolumeInformation()

3、目录相关的API

创建目录

CreateDirectory()

删除目录

RemoveDirectory()

修改目录

MoveFile()

获取程序当前目录

GetCurrentDirectory()

设置程序当前目录

SetCurrentDirectory()

4、文件相关的API

创建文件

CreateFile()

关闭文件

CloseHandle()

获取文件长度

GetFileSize()

获取文件的属性和信息

GetFileAttributesEx()

读取文件

//分配空间 LPSTR pszBuffer = (LPSTR)malloc(10); ZeroMemory(pszBuffer,10); //设置当前读取位置 SetFilePointer(hFile,1,NULL,FILE_BEGIN); //读取数据 DWORD dwReadLength = 0; ReadFile(hfile,pszBuffer,10,&dwReadLength,NULL); //释放内存 Free(pszBuffer); //关闭文件 CloseHandle(hFile);

写入文件

 WriteFile()

拷贝文件

CopyFile()

删除文件

DeleteFile()

查找文件

FindFirstFile()

FindNextFile()

5、内存映射文件

像操作内存一样操作文件,拥有远比IO的方式好的多的性能,且可以为多个进程共享。

//1、得到文件句柄

HANDLE hFile = CreateFile((LPCWSTR)"filepath", GENERIC_READ | GENERIC_WRITE);

if (hFile == INVALID_HANDLE_VALUE)

{

printf("CreateFile error:%d\n", GetLastError());

return 0;

}

//2、创建FileMapping对象

HANDLE hFileMap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, BUF_SIZE, (LPCWSTR)MapFileName);

//3、将物理页与线性地址进行映射

LPTSTR lpAddr = (LPTSTR)MapViewOfFile(hFileMap, FILE_MAP_COPY, 0, 0, BUF_SIZE);

if (lpAddr == NULL)

{

printf("MapViewOfFile error:%d\n", GetLastError());

CloseHandle(hFileMap);

CloseHandle(hFile);

return 0;

}

//4、读取文件

DWORD dw = *(PDWORD)lpAddr;

//5、写入文件

*(PDWORD)lpAddr = 0x1234;

//强制更新缓存

FlushViewOfFile((PDWORD)lpAddr, 4);

//6、关闭资源

UnmapViewOfFile(lpAddr);

CloseHandle(hFileMap);

CloseHandle(hFile);

FILE_MAP_COPY :写拷贝,写的时候拷贝一份物理页

最新回复(0)