C++,文件,文件夹操作,创建、删除、检测
推荐 filesystem ,特别好用,除了新建、删除、复制、移动文件夹,还支持磁盘空间检测,权限检测,路径处理。
一、使用系统库
// 检测文件,检测文件夹 /* windows * 头文件:io.h * 函数:int access(const char* _Filename, int _AccessMode); * * _AccessMode参数说明: 00表示只判断是否存在,02表示文件是否可执行, 04表示文件是否可写,06表示文件是否可读 * 有访问权限返回0,否则返回-1 */ /* Linux * 头文件:unistd.h * 函数:int access(const char* _Filename, int _AccessMode); * * _AccessMode参数说明: 00表示只判断是否存在,02表示文件是否可执行, 04表示文件是否可写,06表示文件是否可读 * 有访问权限返回0,否则返回-1 */ // 创建文件夹 /* windows * 头文件:direct.h * 函数:int mkdir(const char* _Path); * 返回值:0(成功),-1(失败) */ /* Linux * 头文件:sys/types.h, sys/stat.h * 函数:int mkdir(const char* _Path, mode_t mode); * 返回值:0(成功),-1(失败) */ // 删除文件夹 /* windows * 头文件:direct.h * 函数:int rmdir(const char* _Path); * 返回值:0(成功),-1(失败) */ /* Linux * 头文件:sys/types.h, sys/stat.h * 函数:int rmdir(const char* _Path); * 返回值:0(成功),-1(失败) */
二、使用C++库
#include <iostream> #include <filesystem> using namespace std; int main() { cout << "C++17 Filesystem" << endl; // 创建文件夹 bool ret = std::filesystem::create_directory("C:\\t1"); if (ret) { cout << "创建文件夹成功" << endl; } // 复制文件 std::filesystem::copy("C:\\t1\\1.txt", "C:\\t1\\2.txt"); // 删除文件,删除文件夹 ret = std::filesystem::remove("C:\\t1\\2.txt"); if (ret) { cout << "删除文件成功" << endl; } // ========= 路径处理 ========== // 路径拼接 std::filesystem::path base_path = "C:\\t1"; std::filesystem::path file_name = "a.txt"; std::filesystem::path full_path = base_path / file_name; cout << "拼接路径:" << full_path << endl; // 路径解析 cout << "文件夹路径:" << full_path.parent_path() << endl; cout << "完整文件名:" << full_path.filename() << endl; cout << "文件名(不带后缀):" << full_path.stem() << endl; cout << "文件名后缀:" << full_path.extension() << endl; return 0; }
三、使用Windows API
#include <Windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // 复制文件:False(文件存在,覆盖),True(文件存在,拷贝失败) BOOL ret = CopyFile(TEXT("d:\\1.txt"), TEXT("d:\\2.txt"), FALSE); // 移动文件 bool ret = MoveFile(TEXT("d:\\1.txt"), TEXT("d:\\a\\2.txt")); // 删除文件 BOOL ret = DeleteFile(TEXT("D:\\1.txt")); // 创建空文件 HANDLE Hfile = CreateFile(TEXT("D:\\1.txt"), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); // 打开文件 HANDLE Hfile = CreateFile(TEXT("D:\\1.txt"), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); }
相关链接:https://blog.csdn.net/qq_21438461/article/details/132644824


浙公网安备 33010602011771号