C++17filesystem⽂件系统(详解)
本⽂主要介绍C++17中的filesystem中的⼀些常⽤⽅法
⼀、C++17的⽀持
blog.csdn/qq_40946921/article/details/90645890
⼆、头⽂件及命名空间
1. #include<filesystem>
2. using namespace std::filesystem;
三、常⽤类:
path类:说⽩了该类只是对字符串(路径)进⾏⼀些处理,这也是⽂件系统的基⽯。
directory_entry类:功如其名,⽂件⼊⼝,这个类才真正接触⽂件。
directory_iterator类:获取⽂件系统⽬录中⽂件的迭代器容器,其元素为 directory_entry对象(可⽤于遍历⽬录)
file_status类:⽤于获取和修改⽂件(或⽬录)的属性(需要了解C++11的强枚举类型(即枚举类))
四、使⽤⽅法
1. 需要有⼀个path对象为基础,如果需要修改路径,可以调⽤其成员函数进⾏修改(注意其实只是处理字符串)。
2.需要获取⽂件信息需要通过path构造directory_entry,但需要path⼀定存在才能调⽤构造,所以需要实现调⽤exists(path .)函数确保⽬录存在才能构造directory_entry(注意⽂件⼊⼝中的exists⽆法判断)。
3.若需遍历,则可以使⽤ directory_iterator,进⾏遍历
演⽰如下:
1. #include <iostream>
2. #include<filesystem>
3. using namespace std;
4. using namespace std::filesystem;
5. int main(){
6. path str("C:\\Windows");
7. if (!exists(str)) //必须先检测⽬录是否存在才能使⽤⽂件⼊⼝.
8. return 1;
9. directory_entry entry(str); //⽂件⼊⼝
10. if (entry.status().type() == file_type::directory) //这⾥⽤了C++11的强枚举类型
11. cout << "该路径是⼀个⽬录" << endl;
12. directory_iterator list(str); //⽂件⼊⼝容器
13. for (auto& it:list)
14. cout << it.path().filename()<< endl; //通过⽂件⼊⼝(it)获取path对象,再得到path对象的⽂件名,将之输出
15. system("pause");
16. return 0;
17. }
system的头文件
五、常⽤库函数
void copy(const path& from, const path& to) :⽬录复制
path absolute(const path& pval, const path& base = current_path()) :获取相对于base的绝对路径bool create_directory(const path& pval) :当⽬录不存在时创建⽬录
bool create_directories(const path& pval) :形如/a/b/c这样的,如果都不存在,创建⽬录结构bool exists(const path& pval) :⽤于判断path是否存在
uintmax_t file_size(const path& pval) :返回⽬录的⼤⼩
file_time_type last_write_time(const path& pval) :返回⽬录最后修改⽇期的file_time_type对象bool remove(const path& pval) :删除⽬录
uintmax_t remove_all(const path& pval):递归删除⽬录下所有⽂件,返回被成功删除的⽂件个数void rename(const path& from, const path& to) :⽬录重命名
六、类图
未完...
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论