2009-01-11 65 views
2
文件

我写了一个程序,将etablish使用的TcpClient远程计算机,我用它来在100K块传输文件到远程.NET应用程序的网络连接,它inturn然后把它们写入到HardDrive。除了涉及到ZIP文件时,所有文件传输都可以正常工作 - 很遗憾,需要注意的是复制文件始终为98K ... ZIP文件是否存在一些黑暗的秘密,以防止以这种方式处理它们。同样所有其他文件传输做工精细,图像,XLS,TXT,CHM,EXE等C#读“邮编”使用FileStream

困惑

回答

3

嘛,所以它有点棘手说究竟什么是错的,你还没有表现出任何代码。

通常错误是假设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); 
} 

但是,这只是一个猜测。如果你可以发布一些代码,我们会有更好的机会去搞清楚。

0

这可能是要覆盖(而不是追加到),每块现有的文件收到的?因此文件的最终大小将为< =一个块的大小。

,但没有任何代码,这是很难说的问题的原因。

1

实际的代码将是有益的。

是否使用BinaryReader在/的BinaryWriter?

(而不是基于文本即数据为基础)。

你可以尝试使用十六进制文件进行比较(例如Beyond Compare)比较原件和复印件,并看看是否给你任何线索。