我编写了一个程序,它将使用TCPClient与远程计算机建立网络连接我正在使用它将100k块的文件传输到远程.net应用程序,然后将它们写入HardDrive。除了ZIP文件之外,所有文件传输都很好 - 很奇怪注意到重新组合的文件总是98K ... ZIP文件有一些黑暗的秘密,阻止它们以这种方式处理。同样,所有其他文件传输工作正常,图像,xls,txt,chm,exe等。
困惑
答案 0 :(得分:3)
好吧,你没有显示任何代码,所以说出确切的错误是有点棘手的。
通常的错误是假设Stream.Read读取您要求它的所有数据,而不是意识到它可能读得更少,但它实际的数量 read是返回值。
换句话说,代码不应该是:
byte[] buffer = new byte[input.Length];
input.Read(buffer, 0, buffer.Length);
output.Write(buffer, 0, buffer.Length);
但是像:
byte[] buffer = new byte[32 * 1024];
int bytesRead;
while ( (bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, bytesRead);
}
但这只是猜测。如果你可以发布一些代码,我们就有更好的机会把它搞清楚。
答案 1 :(得分:1)
实际代码会有所帮助。
您使用的是BinaryReader / BinaryWriter吗?
(即基于数据而非基于文本)。
您可以尝试使用hex文件比较(例如Beyond Compare)来比较原始文件和副本,看看是否能为您提供任何线索。
答案 2 :(得分:0)
可能是您在收到每个块时覆盖(而不是附加)现有文件?因此,文件的最终大小将是< =一个块的大小。
但是没有任何代码,很难说出问题的原因。