【发布时间】:2012-04-17 01:36:51
【问题描述】:
我不断地在一个目录中轮询文件,每次我看到一个满足某些读取标准的文件时,我都会打开该文件并对其进行解析。
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 打开它并尝试解析一个不完整的文件。如何让 ifstream 等到文件写入完成后再尝试解析文件?
编辑: 想在这里更好地表达这个问题,因为回复者似乎误解了我的问题。我有 2 个目录
mydirectory/
mydirectoryParsed/
我的代码的工作方式是我的程序检查 mydirectory/ 中的文件,当它找到它们时,解析它们并使用文件中的信息。没有写入文件。完成文件解析后,文件将移动到 mydirectoryparsed/
问题是,当我通过网络将文件传输到 mydirectory/ 时,ifstream 会在传输过程中看到这些文件,并在它们完成写入目录之前开始读取它们。如何让 ifstream 等到文件完全写入后再解析?
【问题讨论】:
-
在文件句柄打开时让写入文件的人拒绝读取访问权限。
标签: c++ file-io locking ifstream