FileOperate.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. #pragma once
  2. // FileOperate.h
  3. #ifndef FILEOPERATE_H
  4. #define FILEOPERATE_H
  5. #include <iostream>
  6. #include <string>
  7. #include <sys/types.h>
  8. #include <sys/stat.h>
  9. #include <fstream>
  10. using namespace std;
  11. class FileOperate
  12. {
  13. public:
  14. FileOperate();
  15. FileOperate(const std::string& file);
  16. ~FileOperate();
  17. // 创建文件
  18. static bool create(const std::string &file);
  19. // 删除文件
  20. static bool remove(const std::string &file);
  21. // 文件是否存在
  22. static bool exist(const std::string &file);
  23. // 打开文件
  24. bool open(ios_base::openmode __mode = std::fstream::in | std::fstream::out);
  25. bool open(const std::string &file, ios_base::openmode __mode = std::fstream::in | std::fstream::out);
  26. // 关闭文件
  27. void close();
  28. // 重命名文件
  29. bool rename(const std::string &newName);
  30. // 文件是否存在
  31. bool isExist();
  32. // 获取文件名
  33. const std::string fileName();
  34. // 获取文件所在目录
  35. const std::string fileDir();
  36. // 获取文件大小(总字节数)
  37. std::size_t fileSize();
  38. // 判断当前字符是否在最后
  39. bool atEnd();
  40. // 读取文件内容
  41. void read(std::string &buffer, size_t bufferSize);
  42. const std::string readLine();
  43. const std::string readAll();
  44. // 写数据到文件
  45. void write(const std::string &data);
  46. private:
  47. std::string mFile;
  48. std::fstream mFileStream;
  49. };
  50. #endif // FILEOPERATE_H
  51. /*
  52. *
  53. // 方式一
  54. FileOperate mFileOperate("/home/Test/Test1.txt");
  55. if (!mFileOperate.open(std::fstream::in | std::fstream::out | std::fstream::app)) {
  56. cout << "文件打开失败" << endl;
  57. return 0;
  58. }
  59. // 方式二
  60. FileOperate mFileOperate;
  61. std::string fileStr = "/home/Test/Test1.txt";
  62. if (!mFileOperate.open(fileStr, std::fstream::in | std::fstream::out | std::fstream::app)) {
  63. cout << "文件打开失败" << endl;
  64. return 0;
  65. }
  66. FileOperate mFileOperate("/home/Test/Test1.txt");
  67. // 获取文件名
  68. cout << mFileOperate.fileName() << endl; // 输出: Test1.txt
  69. // 获取文件所在目录
  70. cout << mFileOperate.fileDir() << endl; // 输出: /home/xushuan/Test/
  71. // 获取文件大小
  72. cout << mFileOperate.fileSize() << endl;
  73. // 方式一 一行一行读取
  74. std::string data;
  75. while (!mFileOperate.atEnd()) {
  76. data = mFileOperate.readLine();
  77. }
  78. // 方式二 读取指定字节大小的数据
  79. std::string data;
  80. mFileOperate.read(data, 100);
  81. // 方式三 一次性全部读取
  82. // 方式一
  83. std::string data = mFileOperate.readAll();
  84. // 方式二
  85. string data;
  86. mFileOperate.read(data, mFileOperate.fileSize());
  87. // 写入数据到文件
  88. mFileOperate.write("hello");
  89. *
  90. *
  91. ***/