2010-07-28 83 views
0

我有一個有30000個項目的數組列表,在ASP.NEt頁面上動態創建文本文件的最佳方式是什麼?目前我使用下面的代碼,但它超時處理大量數據,在.NET中創建文件的最快,最有效的方式

Using fileStr As New FileStream(sFileName, FileMode.Create, FileAccess.Write) 
Using writer As New StreamWriter(fileStr) 
    writer.WriteLine("Error Messages") 
    For d As Integer = 0 To ar.Count - 1 
     writer.WriteLine(ar(d).ToString()) 
     sErrMsg += "<tr><td class='errgrid'>><td class='errgrid'>" + ar(d).ToString() + "</td><tr>" 
    Next 
    writer.Close() 
End Using 
fileStr.Close() 
End Using 
+0

ArrayLists本身已經是邪惡的,但是在任何集合中放置了30,000個物品,並且它會在大對象堆上結束,並且在ASP.Net中造成死亡。它可以用來測試你的開發機器,但在部署之後會間歇性地崩潰。 – 2010-07-28 14:56:07

+0

如果您使用'using'語句,則不需要writer.Close()或fileStr.Close()。只是想我會把它扔到那裏。 – 2010-07-28 14:56:27

+0

另外,將30,000個項目寫入html頁面是_bad_可用性。 – 2010-07-28 14:57:52

回答

0

我假設sErrMsg是一個字符串變量。你真的想把它改成一個StringBuilder。

+0

另外我改變了它的工作方式,因爲Joel說寫了30,000個項目到html頁面是不好的。 – blue 2010-09-03 16:47:26

0

嗯,我想這是一個簡單的方法:

Dim fs As FileStream = File.Create(path) 
     Dim info As Byte() = New UTF8Encoding(True).GetBytes("This is some text in the file.") 

     ' Add some information to the file. 
     fs.Write(info, 0, info.Length) 
     fs.Close() 

http://msdn.microsoft.com/en-us/library/d62kzs03.aspx

問候,

0

那麼首先我會說從ASP.Net Page中拿出來,並把它作爲在服務器上運行的東西。然後在服務器上創建該文件,然後讓用戶下載文件或執行您需要的任何操作。