Code C++ Xử lý file
Chào mừng các bạn đến với blog: Phát Triển Phần Mềm 123AZ
Đây là các mẫu code cho việc xử lý file trong lập trình c++
+ Kiểm tra sự tồn tại 1 file
#include <conio.h> #include <io.h> #include <iostream> bool ChecIsExistFile(const char* path) { bool check = _access(path, 0); if (check == -1) return false; else return true; } void main() { bool ret = ChecIsExistFile("text1.txt"); _getch(); }
+ Delete 1 file trong c++
#include <iostream> #include <conio.h> bool DeleteFile(const char* file_path) { int ret = remove(file_path); bool is_ok = (ret == 0) ? true : false; return ret; } void main() { bool ret = DeleteFile("abc.txt"); _getch(); return; }
+ Tạo 1 file với một dung lượng mong muốn Byte – KB – MB
=> Dùng cho nhiều trường hợp cần để test
#include <iostream> #include <conio.h> #include <fstream> using namespace std; char sample_text64[] = {"128character128character128character128character128character128c"}; void CreateFile(const char* path, const char& ch, const int& num) { fstream wr_file; wr_file.open(path, ios::out); switch (ch) { case 'B': { for(int i = 0; i < num; i++) { wr_file << "a" ; if(i > 0 && (i%500 == 0)) { wr_file << "\n" ; } } } break; case 'K': { for (int i = 0;i <(num*16);i++) { wr_file << sample_text64; if((i > 0) &&( i%512 == 0)) { wr_file << "\n"; } } } break; case 'M': { for (int i = 0; i<(num*1024*16); i++) { wr_file << sample_text64; if ((i>0) && (i%512 == 0)) { wr_file <<"\n"; } } } break; default: break; } wr_file.close(); } void main() { CreateFile("Test.txt", 'B', 100); CreateFile("Test2.txt", 'K', 100); CreateFile("Test3.txt", 'M', 100); }
+ Liệt kê các file trong 1 folder có sẵn.
#include <Windows.h> #include <conio.h> #include <io.h> #include <string> #include <vector> #include <iostream> std::string WcharToString(wchar_t* wchar_str) { std::string str(""); int index = 0; while (wchar_str[index] != 0) { str += (char)wchar_str[index]; ++ index; } return str; } wchar_t* StringToWchar(std::string str) { int index = 0; int count = str.size(); wchar_t *ws_str = new wchar_t [count+1]; while (index < str.size()) { ws_str[index] = (wchar_t)str[index]; index++; } ws_str[index] = 0; return ws_str; } std::vector<std::string> ListFileInFolder(std::string path_folder) { WIN32_FIND_DATA find_file_data; std::vector<std::string> list_file; wchar_t *path_folder_full = StringToWchar(path_folder); HANDLE hFind = FindFirstFile(path_folder_full, &find_file_data); list_file.push_back(WcharToString(find_file_data.cFileName)); while(FindNextFile(hFind, &find_file_data)) { list_file.push_back(WcharToString(find_file_data.cFileName)); } return list_file; } void main() { std::string str_path_folder("C:\\Temp_Test\\*txt"); std::vector<std::string> list_file = ListFileInFolder(str_path_folder); for (int i = 0; i<list_file.size(); i++) { std::cout << list_file[i] << std::endl; } _getch(); }
+ Copy nội dung file A vào File B
#include <conio.h> #include <io.h> #include <iostream> #include <fstream> bool CopyContentFileToFile(const char* src_path, const char* des_path) { std::ifstream::pos_type size; char * memblock = NULL; std::ifstream file_src (src_path, std::ios::in|std::ios::binary|std::ios::ate); if (file_src == NULL) { return false; } if (file_src.is_open()) { size = file_src.tellg(); memblock = new char [size]; file_src.seekg (0, std::ios::beg); file_src.read (memblock, size); file_src.close(); } if (memblock != NULL) { std::fstream file_des(des_path, std::ios::out | std::ios::binary); file_des.seekg(0, std::ios::beg); file_des.write(memblock, size); file_des.close(); } return true; } void main() { bool ret = CopyContentFileToFile("Test2.txt", "C:\\Temp_Test\\t1.txt"); _getch(); }