C# 更有效的文件写入方式 我现在使用C++ C代码< /P>从C++服务器传输文件

C# 更有效的文件写入方式 我现在使用C++ C代码< /P>从C++服务器传输文件,c#,.net,webrequest,C#,.net,Webrequest,我得到了前三次文件传输的合理时间,100MB的传输和写入大约需要43秒。2GB文件传输的时间长得令人讨厌,大约37分钟,而预期为15分钟。我希望确保这段代码的接收端不会导致速度减慢,我想知道是否有更有效的方法将这些文件写入磁盘 您可以尝试使用类来获取原始文件,而不是流块: WebClient client = new WebClient(); client.DownloadFile(fileUri, filePathOnHardDrive); 您可以尝试使用类来获取原始文件,而不是流块: We

我得到了前三次文件传输的合理时间,100MB的传输和写入大约需要43秒。2GB文件传输的时间长得令人讨厌,大约37分钟,而预期为15分钟。我希望确保这段代码的接收端不会导致速度减慢,我想知道是否有更有效的方法将这些文件写入磁盘

您可以尝试使用类来获取原始文件,而不是流块:

WebClient client = new WebClient();
client.DownloadFile(fileUri, filePathOnHardDrive);
您可以尝试使用类来获取原始文件,而不是流块:

WebClient client = new WebClient();
client.DownloadFile(fileUri, filePathOnHardDrive);


首先,删除
while(true){}
…它只存在于保持控制台打开的情况下,对传输没有影响。CopyTo是否比读取/写入字节更有效?我知道,但这是一种不好的做法。请改用
Console.ReadLine()
。一些多线程处理也会有帮助…首先,删除
而(true){}
…它只存在于保持控制台打开的情况下,它对传输没有影响。CopyTo是否比读取/写入字节更有效?我知道,但这是一种不好的做法。改为使用
Console.ReadLine()
。一些多线程处理也会有所帮助……该代码已经存在,但我遇到过这样的情况:如果在文件写入时关闭服务器,则c代码会引发异常。这使我相信该文件是从服务器流式传输的,而不是作为块发送的。@JME-您真的想在写入任何2GB文件之前将其保存在内存中吗?用于测试目的possibly@JME你为什么要测试一个糟糕的解决方案?编写一个好的解决方案,然后进行测试。@Ashigore他可能是指检查下载的数据内容。该代码已经存在,但我遇到过这样的情况:如果在文件写入时关闭服务器,则c#代码会引发异常。这使我相信该文件是从服务器流式传输的,而不是作为块发送的。@JME-您真的想在写入任何2GB文件之前将其保存在内存中吗?用于测试目的possibly@JME你为什么要测试一个糟糕的解决方案?写一个好的解决方案,然后测试它。@Ashigore他可能是指检查下载的数据内容。