文件操作

基本用法:
http://blog.csdn.net/yingfox/archive/2007/12/06/1921600.aspx

 

个人写的代码:

#include #include #include int main() { char szFileName[MAX_PATH]; ZeroMemory(szFileName, MAX_PATH); strcpy(szFileName, "F://filetest//aaa.txt"); HANDLE hFile = CreateFile( szFileName, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_DELETE |FILE_SHARE_READ |FILE_SHARE_WRITE,/*[sharemode:] 0:can not be share.*/ NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if ( INVALID_HANDLE_VALUE == hFile ) { printf("createfile failed, error code is :%d/n",GetLastError()); return 0; } FILETIME ftCreationTime, ftLastAccessTime, ftLastWriteTime; BOOL iResult = GetFileTime(hFile, &ftCreationTime, &ftLastAccessTime, &ftLastWriteTime); if (iResult == 0) { printf("GetFileTime failed. error code is:%d/n", GetLastError()); return 0; } FILETIME ftCreationTime1, ftLastAccessTime1, ftLastWriteTime1; iResult = GetFileTime(hFile, &ftCreationTime1, &ftLastAccessTime1, &ftLastWriteTime1); if (iResult == 0) { printf("GetFileTime failed. error code is:%d/n", GetLastError()); return 0; } iResult = CompareFileTime(&ftCreationTime, &ftCreationTime1); if ( iResult == 0 ) { printf("same creation time"); } DWORD dwFileSizeHigh; //return bytes number. DWORD dwFileSizeLow = GetFileSize(hFile, &dwFileSizeHigh); if ( dwFileSizeLow == 0xFFFFFFFF ) { printf("GetFileSize failed. error code is:%d/n",GetLastError()); return 0; } char szNewFileName[MAX_PATH]; ZeroMemory(szNewFileName, MAX_PATH); strcpy(szNewFileName, "F://SHAWN 小小研究//test//test.txt"); iResult = CopyFile(szFileName, szNewFileName, FALSE); if ( iResult == 0 ) { printf("CopyFile failed, error code is:%d/n",GetLastError()); return 0; } iResult = DeleteFile(szFileName); if ( iResult == 0 ) { printf("DeleteFile failed. Error code is:%d/n",GetLastError()); return 0; } getchar(); }  

 

注意事项:

在CreateFile的参数中如果sharemode不设置为:

FILE_SHARE_READ,FILE_SHARE_WRITE,就不能够调用CopyFile,因为CopyFile内部

肯定需要读写操作的,在调用DeleteFile时,需要设置sharemode为FILE_SHARE_DELETE

所以综上要考虑好调用CreateFile调用的参数和其他API调用时的协调问题。不然会出现问题。

 

WinApi调用的错误列表:

0000 操作已成功完成。

 

0001 错误的函数。

 

0002 系统找不到指定的文件。

 

0003 系统找不到指定的路径。

 

0004 系统无法打开文件。

 

0005 拒绝访问。

 

0006 句柄无效。

 

0007 存储区控制块已损坏。

 

0008 可用的存储区不足,无法执行该命令。

 

0009 存储区控制块地址无效。

 

0010 环境错误。

 

0011 试图使用不正确的格式加载程序。

 

0012 访问代码无效。

 

0013 数据无效。

 

0014 可用的存储区不足,无法完成该操作。

 

0015 系统找不到指定的驱动器。

 

0016 无法删除该目录。

 

0017 系统无法将文件移到其他磁盘驱动器上。

 

0018 没有其他文件。

 

0019 媒体写保护。

 

0020 系统找不到指定的设备。

 

0021 设备尚未准备好。

 

0022 设备无法识别该命令。

 

0023 数据错误(循环冗余检查)。

 

0024 程序发出命令,但是该命令的长度错误。

 

0025 驱动器在磁盘上无法定位指定的区域或磁道。

 

0026 无法访问指定的磁盘或软盘。

 

0027 驱动器找不到所请求的扇区。

 

0028 打印机缺纸。

 

0029 系统无法写入指定的设备。

 

0030 系统无法读取指定的设备。

 

0031 与系统连接的设备不能正常运转。

 

0032 其他进程正使用该文件,因此现在无法访问。

 

0033 另一进程已锁定该文件的某一部分,因此现在无法访问。

 

0034 驱动器中的软盘不正确。请将 %2 (卷标序列号: %3)插入驱动器 %1。

 

0036 打开共享的文件太多。

 

0038 已到达文件结尾。

 

0039 磁盘已满。

 

0050 不支持此网络请求。

 

0051 远程计算机无法使用。

 

0052 网络中存在重名。

 

0053 找不到网络路径。

 

0054 网络正忙。

 

0055 指定的网络资源或设备已不可用。

 

0056 已经达到网络命令的极限。

 

0057 网络适配器出现错误。

 

0058 指定的服务器无法执行所请求的操作。

 

0059 网络出现意外错误。

 

0060 远程适配器不兼容。

 

0061 打印机队列已满。

 

0062 服务器上没有存储等待打印的文件的空间。

 

0063 已经删除等候打印的文件。

 

0064 指定的网络名无法使用。

 

0065 拒绝访问网络。

 

0066 网络资源类型错误。

 

0067 找不到网络名。

 

0068 已超过本地计算机网络适配器卡的名称极限。

 

0069 已超过网络 BIOS 会话的极限。

 

0070 远程服务器已经暂停或者正在启动过程中。

 

0071 由于该计算机的连接数目已达到上限,此时无法再连接到该远程计算机。

 

0072 指定的打印机或磁盘设备已经暂停。

 

0080 该文件存在。

 

0082 无法创建该目录或文件。

 

0083 INT 24 失败。

 

0084 处理该请求的存储区不可用。

 

0085 正在使用该本地设备名。

 

0086 指定的网络密码不正确。

 

0087 参数错误。

 

0088 网络出现写入错误。

 

你可能感兴趣的:(C/C++,网络,file,磁盘,存储,path,winapi)