我有一个目录 ( DIR_A ) 可以从服务器 A 转储到服务器 B,预计需要几周时间。DIR_A具有正常的树结构,即一个目录可以有子文件夹或文件等
目标: 由于DIR_A被转储到服务器 B,我将不得不通过DIR_A并在其中搜索某些文件(不知道每个文件的确切名称,因为服务器 A 更改了所有正在发送的文件的名称)。我等不及要处理DIR_A中的一些文件了。所以,我想在服务器 B 收到一些文件后开始处理它们。
简介: 服务器 A 将DIR_A发送到服务器 B。预计需要数周时间。我必须在上传完成之前开始处理 B 处的文件。
尝试想法: 我决定编写一个程序来列出DIR_A的内容。我继续找出文件是否存在于DIR_A的文件夹和子文件夹中。我想我可能会在DIR_A中查找文件的 EOF 。如果它不存在,则该文件尚未完全上传。我应该等到找到EOF。因此,我不断循环,计算文件的大小并验证是否存在 EOF。如果是这种情况,那么我开始处理该文件。
为了模拟上述情况,我决定编写并执行一个写入文本文件的程序,然后在中间停止它而不等待完成。我尝试使用下面的程序来确定是否可以找到 EOF。我假设由于我突然结束了写入文本文件的程序,因此 eof 将不存在,因此EOF FOUND
不应达到输出“”。我错了,因为达到了这一点。我还尝试了 feof() 和 fseek()。
std::ifstream file(name_of_file.c_str, std::ios::binary);
//go to the end of the file to determine eof
char character;
file.seekg(0, ios::end);
while(!file.eof()){
file.read(character, sizeof(char));
}
file.close();
std::cout << "EOF FOUND" << std::endl
谁能提供确定文件是否已完全写入的想法?