1

我面临着一个非常奇怪的问题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 KB 范围内。难道我做错了什么?有什么建议么?

4

1 回答 1

2

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

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

于 2012-05-18T16:23:25.087 回答