因此,我正在为学校项目编写自己的自定义FTP客户端。我设法让所有的东西都可以和蜂拥而至的FTP客户端一起工作,然后到最后一小部分......将.part文件读入主文件。我需要做两件事。 (1)读取每个文件并正确写入最终文件(2)完成每个文件后删除部分文件的命令。读取.part文件并将它们全部连接起来
有人可以帮我解决我写下面的连接函数吗?我认为我已经正确地阅读每个文件直到EOF,然后继续下一个。
在这种情况下,*numOfThreads
为17.结尾的文件为4742442字节,而不是594542592字节。谢谢,我很乐意提供任何其他有用的信息。
编辑:修改后的注释代码。
std::string s = "Fedora-15-x86_64-Live-Desktop.iso";
std::ofstream out;
out.open(s.c_str(), std::ios::out);
for (int i = 0; i < 17; ++i)
{
std::ifstream in;
std::ostringstream convert;
convert << i;
std::string t = s + ".part" + convert.str();
in.open(t.c_str(), std::ios::in | std::ios::binary);
int size = 32*1024;
char *tempBuffer = new char[size];
if (in.good())
{
while (in.read(tempBuffer, size))
out.write(tempBuffer, in.gcount());
}
delete [] tempBuffer;
in.close();
}
out.close();
return 0;
作为通知,您可以使用in.gcount()来访问读取字节数。此外,你不释放tempBuffer变量。其他的一切对我来说都很好。你有没有检查文件内容?哪个文件被截断并在哪里? – Spook 2013-02-13 05:59:04
'ifstream :: read'返回'istream&',因此在while循环中使用它作为条件似乎没有太多意义。我会使用'while(!in.eof())'代替。 – Spook 2013-02-13 06:53:05