我的需求是從.net應用程序上傳4GB文件並從.net應用程序下載相同的文件。我們可以使用.net應用程序上傳和下載4GB文件。從.net應用程序下載4GB文件
因此,要上傳4GB文件,我們拆分了4GB文件,並在下載時使用C#中的FileStream對象合併文件。
現在我可以將文件保存在客戶端機器上,當我點擊我的.net應用程序中的下載按鈕時。但保存文件流對象時寫入字節字節並將文件保存到用戶的機器。它需要更多時間將文件保存到客戶端機器。即使是100MB文件,它也需要保存大約2小時。因此,如果我節省了4GB,則需要很長時間。
提高速度的最佳方法是什麼? 有沒有Filestream對象可用? 請幫助我使用.net應用程序從Networkshare下載4GB文件。 如果你發現任何其他的解決方案也上傳並下載.net的4GB文件,這將是很好的。
我無法使用asp.net下載代碼來下載4GB文件。所以我們遵循分裂的方法。 請幫我提高下面代碼的速度。我正在使用Asp .net 3.5應用程序。
我的代碼,而上傳:
FileStream foption = new FileStream(strFileName, FileMode.Open);
len = foption.Length;
eachSize = (int)Math.Ceiling((double)len/x);
foption.Close();
FileStream inFile = new FileStream(strFileName, FileMode.OpenOrCreate, FileAccess.Read);
for (int i = 0; i < x; i++)
{
FileStream outFile = new FileStream(strDir + "\\" + i + ".zip", FileMode.OpenOrCreate, FileAccess.Write);
int data = 0;
byte[] buffer = new byte[eachSize];
if ((data = inFile.Read(buffer, 0, eachSize)) > 0)
{
outFile.Write(buffer, 0, data);
}
outFile.Close();
}
我的代碼,同時下載
FileStream outFile = new FileStream("\\\\" + clientIPAddress + "\\upload\\output.zip", FileMode.OpenOrCreate, FileAccess.Write);
for (int i = 0; i < 10; i++)
{
int data = 0;
byte[] buffer = new byte[4096];
FileStream inFile = new FileStream(strMediaPath + "\\" + i + ".zip", FileMode.OpenOrCreate, FileAccess.Read);
while ((data = inFile.Read(buffer, 0, 4096)) > 0)
{
outFile.Write(buffer, 0, data);
}
inFile.Close();
}
outFile.Close();
感謝 埃德溫
兩種捕獲都非常出色;我在我的機器上的_hot cache_上運行了一些快速和骯髒的測試,發現128kb速度稍快,但速度僅比4kb快1.4倍。冷藏緩存將有所不同,但目前這超出了我的興趣水平。 :) – sarnold 2012-03-13 22:54:23