从WPF中的包URI打开文件

时间:2010-03-28 09:07:36

标签: c# .net file-io

我希望从应用程序包中打开一个.csv文件来进行一些单元测试。所以我真正喜欢的是与File.ReadAllText(string path)相似而不是X.ReadAllText(Uri uri)。我还没有找到这个。

有没有人知道是否可以从包中的文件中读取文本/字节(不介意哪些)而不首先将此文件编译到磁盘?

哦,顺便说一下,File.ReadAllText(@"pack://application:,,,/SpreadSheetEngine/Tests/Example.csv")对我不起作用..我已经在做var app = new Application()诀窍,以确保我在单元测试中启动了一个包。

2 个答案:

答案 0 :(得分:11)

我只是想做同样的事情,最后使用了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);

答案 1 :(得分:6)

只需从Application.GetResourcePart()返回值获取流,并使用StreamReader使用ReadToEnd成员读取所有文本。