2015-06-29 26 views
0

我有一些「重」的文件(50 MB的.csv),我想從他們那裏知道,我想避免建立他們爲「嵌入的資源」獲取流(我的一個要求)。這些文件只能由一個類訪問,所以它不是一個複雜的情況。最後,我的解決方案將最終成爲一個.dll。C#得到鏈接的資源流/內容

我想知道什麼是這樣做的最佳方式:

1)什麼是最好的生成操作,內容或(鏈接)資源?

2)我怎麼從我的資源流?

我一直在互聯網上搜索了很多,沒有我發現我的情況下工作的解決方案:

  • 我試圖通過ResourceManager的訪問他們,但如果我沒有理解好,它僅適用於嵌入式資源

  • 另一種解決方案是使用Application.GetResourceStream,但我無法訪問應用程序命名空間,我不知道爲什麼(我使用System.Windows添加,但它不能解決問題)

到目前爲止,我一直在用TestMethod的嘗試這些解決方案,我不知道這是否有該問題的影響。

謝謝! :)

+0

是否有一個特別的原因,爲什麼你不能去一個嵌入式資源? – nozzleman

+0

對於我所瞭解的嵌入式資源,它們存儲在虛擬內存中,我想避免這種情況(程序已經很大)。 –

回答

0

如果文件是50MB的,我不會他們嵌入到DLL除非是非常不現實的部署與額外的文件DLL。

所以內容會是我的選擇。 50Mb並不多,並且很適合,但請記住該DLL已加載到內存中,因此它會影響內存使用情況。我絕不會將2Gb嵌入式資源添加到我的DLL中! :P

流都流。並且由於這些將是外部文件,它將會是您之後的文件流。看看這個線程閱讀您的CSV作爲流:Reading large text files with streams in C#

+0

謝謝@ Wolf5快速回復!它的工作原理(我想我正在尋找一個複雜的解決方案,而使用簡單的解決方案很好......)!我也遇到了一個問題,使用單元測試(我找不到數據)來測試我的代碼,爲了解決這個問題,我不得不使用[DeploymentItem(「Resources」,「Resources」)]標籤將數據部署到輸出文件夾中將包含在解決方案的「Resources」文件夾中的數據部署到Unit Test文件夾中名爲「Resources」的文件夾中)。 –