gpt4 book ai didi

c++ - C/C++判断文件是否写完

转载 作者:行者123 更新时间:2023-11-28 03:55:50 24 4
gpt4 key购买 nike

我有一个目录 (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

谁能提供一个判断文件是否已经完全写入的思路?

最佳答案

EOF 只是 C++ 告诉您没有更多数据的方式。没有可用于检查文件是否已完全写入的 EOF“字符”。

通常完成此操作的方法是使用同一个名称传输文件,即 myfile.txt.transferring,传输完成后,将文件移动到目标主机上(恢复为类似 myfile.txt 的名称)。您可以使用单独的目录来执行相同的操作。

关于c++ - C/C++判断文件是否写完,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3687383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com