I am looking to open a .csv file from the application pack to do some unit testing. So what I would really love is some analog to File.ReadAllText(string path)
which is instead X.ReadAllText(Uri uri)
. I haven't as yet been able to find this.
Does anyone know if it is possible to read text / bytes (don't mind which) from a file in the pack without compiling this file to disk first?
Oh and btw, File.ReadAllText(@"pack://application:,,,/SpreadSheetEngine/Tests/Example.csv")
didn't work for me.. and I am already doing the var app = new Application()
trick to make sure I have a pack started up during my unit test.
I was just looking to do the same thing and ended up using Application.GetResourceStream. Below is a code example. I used the ReadFully method from Creating a byte array from a stream.
string imagePath = "pack://application:,,,/ReferencedAssembly;Component/Assets/Images/image.png";
StreamResourceInfo imageInfo = System.Windows.Application.GetResourceStream(new Uri(imagePath));
byte[] imageBytes = ReadFully(imageInfo.Stream);
Just get the stream from the Application.GetResourcePart() return value and use a StreamReader to read all the text out using the ReadToEnd member.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With