zoukankan      html  css  js  c++  java
  • boost::filesystem总结

           boost::filesystem是Boost C++ Libraries中的一个模块,主要作用是处理文件(Files)和目录(Directories)。该模块提供的类boost::filesystem::path专门用来处理路径。而且,该模块中还有很多独立的函数能够用来执行创建目录、检查文件是否存在等任务。


    一、创建Paths

            定义路径时需要包含头文件boost/filesystem.hpp,并且使用命名空间boost::filesystem;

            路径的创建很简单,仅仅需要向类boost::filesystem::path()的构造器传递一个string;

            构造器的输入可以是一个没有意义的字符串,因为构造器不会去检测该路径是否是合法路径及是否存在;

            path对象是一个跨平台的路径对象。

            path对象的属性有下列这些:

                   1) path.string()          输出字符串形式的路径

                   2) path.stem()           文件名,不带扩展名

                   3) path.extension()   返回文件扩展名

                   更详细的内容见这里


    二、文件和目录

            该部分包括下列函数:
             boost::filesystem::status(path)                                       查询文件或目录的状态,返回的是boost::filesystem::file_status类型的对象

            boost::filesystem::is_directory()                                    根据获取的状态判断是否是目录,返回bool

            boost::filesystem::is_empty()                                        判断是否为空

            boost::filesystem::is_regular_file()                                 根据获取的状态判断是否是普通文件,返回bool

            boost::filesystem::is_symlink()                                      判断符号连接(在windows系统中,后缀为lnk的文件为连接文件)

            boost::filesystem::exists()                                              判断是否存在


             boost::filesystem::file_size()                                          返回文件的size,按bytes计算

            boost::filesystem::last_write_time()                               返回文件最后一次修改的时间

            boost::filesystem::space()                                              返回磁盘的总空间和剩余空间,


            boost::filesystem::create_directory()                             创建目录

            boost::filesystem::create_directories()                           递归创建整个目录结构

            boost::filesystem::remove()                                           删除目录

            boost::filesystem::remove_all()                                     递归删除整个目录结构

            boost::filesystem::rename()                                           重命名目录

            boost::filesystem::copy_file()                                         复制文件

            boost::filesystem::copy_directory()                               复制目录


             boost::filesystem::absolute()                                           获取文件或目录的绝对路径

            boost::filesystem::current_path()                                   如果没有参数传入,则返回当前工作目录;否则,则将传入的目录设为当前工作目录


    三、目录迭代(Directory Iterators)

            boost::filesystem::directory_iterator()                            迭代目录下的所有文件

            boost::filesystem::recursive_directory_iterator()            递归地遍历一个目录和子目录,也就是迭代整个目录结构下的所有文件


    四、文件流(File Streams)

            头文件<fstream>定义的文件流不能将boost::filesystem::path定义的目录作为参数。如果非要使用path对象打开文件流的话,那就添加头文件<boost/filesystem/fstream.hpp>,如下:

    #include <boost/filesystem/fstream.hpp>

    #include <iostream>

    using namespace boost::filesystem;

    int main()

    {

            path p{"test.txt"};

            ofstream ofs{p};

            ofs << "Hello, world! ";

    }



    参考文献:

          1> Boost::filesystem 使用小笔记

          2> The Boost C++ Libraries

          3> Boost.Filesystem

  • 相关阅读:
    ASP.NET MVC 3:缓存功能的设计问题
    Java开发和运行环境的搭建
    有关TSQL的10个好习惯
    j2me开发J2ME常用的手机厂商SDK和下载地址
    j2me开发Eclipse开发J2ME程序之Hello World
    winform需要缓存吗?webform的缓存的作用?
    学习J2ME编程需要掌握的七种技术
    下一代工作流大曝光:将支持C#表达式
    j2me 出色的开源项目
    eclipse和Myeclipse什么关系
  • 原文地址:https://www.cnblogs.com/Lilu-1226/p/10773263.html
Copyright © 2011-2022 走看看