2010-03-28 42 views
4

我正在打開應用程序包中的.csv文件以執行一些單元測試。所以我真正喜歡的是File.ReadAllText(string path)的一些模擬,而不是X.ReadAllText(Uri uri)。我還沒有找到這個。從WPF中的包URI打開文件

有沒有人知道是否有可能從文件包中的文件讀取文本/字節(不介意哪個),而無需先編譯該文件到磁盤?

哦,順便說一句,File.ReadAllText(@"pack://application:,,,/SpreadSheetEngine/Tests/Example.csv")沒有爲我工作..我已經在做var app = new Application()技巧,以確保我有一個包在我的單元測試期間啓動。

回答

5

只需從Application.GetResourcePart()返回值獲取流並使用StreamReader即可使用ReadToEnd成員讀取所有文本。

+0

那是一個,工作的一種享受。感謝tyranid。 – 2010-03-29 00:56:31

10

我只是想做同樣的事情,並最終使用Application.GetResourceStream。以下是一個代碼示例。我使用了Creating a byte array from a stream的ReadFully方法。

string imagePath = "pack://application:,,,/ReferencedAssembly;Component/Assets/Images/image.png"; 
StreamResourceInfo imageInfo = System.Windows.Application.GetResourceStream(new Uri(imagePath)); 
byte[] imageBytes = ReadFully(imageInfo.Stream);