2017-05-04 62 views
0

我正在嘗試編寫一個方法來監視要創建的文件的目錄。該文件的擴展名爲.complete。如果它不在那裏,我想等待它出現。當它出現時,我想在擴展名之前找到提取文件的名稱,刪除.complete文件,執行一些處理,然後再返回到偵聽新的.complete文件。等待要創建的文件

這是我到目前爲止。我想我只需要幫助提取文件的名稱,假設我正確地使用了通配符。

while(1) { 
    if (!boost::filesystem::exists("/var/test/*.complete")) { 
     cout << ".complete file does not exist" << endl; 
    } 
    else { 

     //extract name of .complete file minus extension 
     //do my processing 
     system("rm *.complete"); 
    } 
} 
+0

我不知道'提升: :filesystem :: exists'執行通配符擴展。你確定它確實嗎? –

+0

它似乎不是沒有一些額外的步驟 – user1984300

+0

boost文件系統庫能夠在指定的路徑下迭代常規文件。它也能夠給一個常規文件的擴展。 – ZFY

回答

0

我不習慣提高,但在幾個簡單的步驟,你可以得到你想要的東西

第1步:閱讀目錄(READDIR或同等學歷)

第2步:您會得到列入目錄作爲一個const char所有文件*

第3步:獲取的std :: string,而不是爲const char *

步驟4:fileName.find( 「完整」)

你得到它:)