我写了一个程序,将etablish使用的TcpClient远程计算机,我用它来在100K块传输文件到远程.NET应用程序的网络连接,它inturn然后把它们写入到HardDrive。除了涉及到ZIP文件时,所有文件传输都可以正常工作 - 很遗憾,需要注意的是复制文件始终为98K ... ZIP文件是否存在一些黑暗的秘密,以防止以这种方式处理它们。同样所有其他文件传输做工精细,图像,XLS,TXT,CHM,EXE等C#读“邮编”使用FileStream
困惑
我写了一个程序,将etablish使用的TcpClient远程计算机,我用它来在100K块传输文件到远程.NET应用程序的网络连接,它inturn然后把它们写入到HardDrive。除了涉及到ZIP文件时,所有文件传输都可以正常工作 - 很遗憾,需要注意的是复制文件始终为98K ... ZIP文件是否存在一些黑暗的秘密,以防止以这种方式处理它们。同样所有其他文件传输做工精细,图像,XLS,TXT,CHM,EXE等C#读“邮编”使用FileStream
困惑
嘛,所以它有点棘手说究竟什么是错的,你还没有表现出任何代码。
的通常错误是假设Stream.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);
}
但是,这只是一个猜测。如果你可以发布一些代码,我们会有更好的机会去搞清楚。
这可能是要覆盖(而不是追加到),每块现有的文件收到的?因此文件的最终大小将为< =一个块的大小。
,但没有任何代码,这是很难说的问题的原因。
实际的代码将是有益的。
是否使用BinaryReader在/的BinaryWriter?
(而不是基于文本即数据为基础)。
你可以尝试使用十六进制文件进行比较(例如Beyond Compare)比较原件和复印件,并看看是否给你任何线索。