[cpp]C++学习笔记-filesystem

C++提供的filesystem提供了丰富的文件操作的类和函数。filesystem 库是一个可移植的文件系统操作相关的库,使用POSIX标准表示文件系统的路径,支持多种操作系统平台,因此使用filesystem可以编写跨平台操作目录,文件的C++程序。

注意:
filesystem 不是C++11标准。 VS2012基于boost TR2的指导实现了filesystem库。

头文件:

#include 

std::tr2::sys::path

path类实现路径字符串的基本操作。

    //定义一个path对象
    std::tr2::sys::path p("d:/test/test.txt");
    std::tr2::sys::path p2("mytest.cpp");
    std::tr2::sys::path p3;

    //转换为字符串
    string s = p.string();

    //全路径,如果是相对路径定义的path,可以输出全路径
    p3 = std::tr2::sys::system_complete(p2);

    //父目录 
    p3 = p.parent_path(); // d:/test

    //不含扩展名的文件名
    p3 = p.stem(); //test

    //文件名,不含路径,带扩展名
    p3 = p.filename(); //test.txt

    //文件扩展名,带点号
    p3 = p.extension(); //.txt

基本操作

    //定义一个path对象
    std::tr2::sys::path p("d:/test/test.txt");
    std::tr2::sys::path p2("mytest.cpp");
    std::tr2::sys::path p3;

    //当前路径
    p3 = std::tr2::sys::current_path();

    //判断文件是否存在
    bool b = std::tr2::sys::exists(p);

    //取文件大小
    uintmax_t size = std::tr2::sys::file_size(p);

    //获取系统临时文件路径
    p3 = std::tr2::sys::temp_directory_path();

    //删除文件
    bool b2 = std::tr2::sys::remove(p);
    //递归删除
    bool b3 = std::tr2::sys::remove_all(p);

    //复制文件或目录
    std::tr2::sys::copy(p1, p2);

    //复制文件
    bool b4 = std::tr2::sys::copy_file(p1, p2);

    //创建目录,支持递归
    bool b5 = std::tr2::sys::create_directories(p);

    //创建目录
    bool b6 = std::tr2::sys::create_directory(p);

你可能感兴趣的:(cpp)