我希望从应用程序包中打开一个.csv文件来进行一些单元测试。所以我真正喜欢的是与File.ReadAllText(string path)
相似而不是X.ReadAllText(Uri uri)
。我还没有找到这个。
有没有人知道是否可以从包中的文件中读取文本/字节(不介意哪些)而不首先将此文件编译到磁盘?
哦,顺便说一下,File.ReadAllText(@"pack://application:,,,/SpreadSheetEngine/Tests/Example.csv")
对我不起作用..我已经在做var app = new Application()
诀窍,以确保我在单元测试中启动了一个包。
答案 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成员读取所有文本。