C ++:boost / filesystem:一些问题

时间:2010-11-17 10:48:34

标签: c++ boost

我在Ubuntu环境中运行的C ++中使用Boost库。我有一些问题我不清楚:

  1. fs::is_directory

    namespace fs = boost::filesystem;
    
    
    fs::path full_path(fs::initial_path<fs::path>() );
    
    
    full_path = fs::system_complete(fs::path( "temp/"));
    
    
    if(fs::is_directory(full_path ))
    {
       cout << "the path is a directory" << endl;
    }
    else
    {
       cout << "the path is not a directory" << endl;
    }
    

    =&GT;我确信在我运行程序的那一刻,在可执行文件的同一位置有一个目录temp。但它总是返回:“路径不是目录”?

  2. fs::last_write_time

    • 这个fs::last_write_time(path)是否能够获得修改目录或文件的给定路径的最后日期时间?

    • 如果某个目录也是如此,那么在创建目录时该目录是真的吗,或者如果我在文件夹中添加文件的话也是如此吗?

  3. fs::directory_iterator

    • fs::directory_iterator dir(full_path) =&gt;如何检查这个'dir'是否有任何子目录?
  4. 在boost :: fileSystem中是否有办法检查文件是否正在打开?

  5. 提前致谢,我希望你能帮助我明白我的想法!

2 个答案:

答案 0 :(得分:2)

  1. 似乎应该有效。你为什么不在if之前放一个cout << fullpath以确保路径真的包含你认为它的作用?

  2. 我从未使用过last_write_time。无法帮助你。

  3. 您必须遍历目录的内容并使用fs::is_directory(dir->status())来确定给定的目录条目是否是目录。 (假设dir是你的目录迭代器)

  4. 我不相信boost :: filesystem中有任何内容可以告诉你文件是否打开。

答案 1 :(得分:0)

重新4:你不能通过简单地拨打[boost::filesystem|std]::fstream::is_open()来确定文件当前是否已打开?