我不斷查詢一個文件目錄,並且每次看到符合某些讀取條件的文件時,我都會打開該文件並對其進行解析。C++ ifstream試圖在寫入時打開文件
string newLine;
ifstream fileReader;
fileReader.open(filename.c_str());
while(!fileReader.eof())
{
getline(fileReader, newLine);
// do some stuff with the line...
}
filereader.close();
上面的代碼是在循環中每1秒運行一次,檢查新文件的目錄。我的問題是,當我將文件傳輸到文件夾中進行處理時,我的循環找到該文件並將文件的名稱傳遞給ifstream,然後誰打開它並嘗試解析不完整的文件。如何讓ifstream在文件完成寫入之前等待,直到它試圖解析文件?
編輯: 希望在這裏更好地說出問題,因爲回覆者似乎誤解了我的問題。我有2個目錄
mydirectory/
mydirectoryParsed/
的方式我的代碼工作原理是,我在mydirectory中的文件程序檢查/當它發現它們,分析它們,並使用在文件中的信息。沒有寫入文件完成。一旦我完成解析文件,文件被移動到mydirectoryparsed/
問題是,當我通過網絡將文件傳輸到mydirectory/ifstream看到這些文件midtransfer並開始讀取它們之前,他們完成寫入目錄。如何讓ifstream在解析之前等待文件完全寫入?
有誰正在寫文件拒絕閱讀訪問,而文件句柄是打開的。 – ildjarn 2012-04-17 01:37:44