2010-11-17 88 views
3

我在Ubuntu環境中運行的C++中使用Boost庫。我有一些問題,我不清楚:C++:boost/filesystem:一些問題

  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; 
    } 
    

    =>我敢肯定,我運行程序的那一刻,有一個temp目錄在同一位置可執行文件。但它總是返回:「路徑不是目錄」?

  2. fs::last_write_time

    • 這是fs::last_write_time(path)能夠得到修改爲BOTH一個目錄或文件的指定路徑的最後日期時間?

    • 如果對於某個目錄也是如此,那麼只有在創建它時的目錄纔是真的,或者如果我將文件添加到文件夾中,最後的日期時間是否也是如此?

  3. fs::directory_iterator

    • fs::directory_iterator dir(full_path) =>我怎麼能檢查該 '目錄' 是否有任何子目錄或沒有?
  4. 有什麼辦法在boost :: fileSystem中檢查文件是否打開?

在此先感謝,希望您能幫助我明確自己的想法!

+0

'/ tmp'是一個目錄,但是'temp /'目錄? – Benoit 2010-11-17 10:52:10

+0

是的,temp是一個目錄。 – olidev 2010-11-17 10:53:09

+0

我重新格式化了你的問題,看看它的源代碼現在看起來如何:) – 2010-11-17 10:53:41

回答

2
  1. 似乎應該工作。爲什麼不把cout << fullpath之前,如果確保路徑真的包含你認爲它的作用?

  2. 我從來沒有用過last_write_time。無法幫助你。

  3. 您必須迭代目錄的內容並使用fs::is_directory(dir->status())來確定給定的目錄條目是否是目錄。 (假設目錄是你的目錄迭代器)

  4. 我不相信有什麼在boost :: filesystem中告訴你一個文件是否打開。

+0

感謝您的簡潔評論! – olidev 2010-11-17 12:58:07

+0

任何人,請幫助問題2和4。 – olidev 2010-11-17 14:18:11

0

re 4 .:您不能通過簡單地撥打電話[boost::filesystem|std]::fstream::is_open()來查明文件當前是否打開嗎?