【问题标题】:Opening a file from a pack URI in WPF从 WPF 中的包 URI 打开文件
【发布时间】:2013-07-04 21:10:48
【问题描述】:

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

有谁知道是否可以在不先将该文件编译到磁盘的情况下从包中的文件读取文本/字节(不介意哪个)?

哦,顺便说一句,File.ReadAllText(@"pack://application:,,,/SpreadSheetEngine/Tests/Example.csv") 不适合我。我已经在使用var app = new Application() 技巧来确保我在单元测试期间启动了一个包。

【问题讨论】:

    标签: c# .net file-io


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-21
        相关资源
        最近更新 更多