FileInfo.Length总是没有给我正确的文件大小

时间:2012-05-18 15:43:20

标签: c# client-server

我遇到FileInfoLength属性的一个非常奇怪的问题。我正在编写一个响应调用的服务器,将文件(主要是图像)发送给客户端。我想在发送实际文件之前将文件大小发送到客户端。我使用FileInfo来查找文件大小,但奇怪的是每次都没有给我正确的大小。换句话说,对于同一个文件,我收到不同的大小,有时小于实际大小,有时是正确的(但从不超过实际大小)。是什么让问题更加奇怪,如果我将相同的代码复制到一个新项目(不是服务器,只是一个测试项目),它可以正常工作并给出正确的答案。服务器使用线程,因此多个客户端可以连接(测试项目没有),但我不认为这与FileInfo有任何关系。这是我的代码:

String fullFilePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + imageName;
FileInfo file1 = new FileInfo(fullFilePath);
Console.Writeline("File Size: {0}", file1.Length);

非常基本的代码!我的图像很小,只有4到10千字节。难道我做错了什么?有什么建议吗?

1 个答案:

答案 0 :(得分:1)

毕竟我得到了它!问题不在FileInfo类,问题是我的客户端服务器通信中的概念问题。图像最初不在服务器上,而是来自其他客户端。发生的事情是客户端正在向服务器发送图像,并且获取此图像的请求是从另一个客户端到达服务器但之前服务器实际上已将图像保存在磁盘上。因此FileInfo获取当前保存字节的Length而不是文件的总字节数。

解决方案如下:当文件发送到服务器时,允许服务器完成保存过程一段时间(例如1秒),然后该文件就可以被其他客户端下载了。