感谢您的光临。
这是我面临的问题,并希望得到一些帮助。
我正在尝试访问.NET标准DLL中的文件。如果我在测试UWP应用程序中使用Windows.Storage命名空间,一切都有效,如下所示:
Windows.Storage.StorageFile f = await StorageApplicationPermissions.FutureAccessList.GetFileAsync("TestPickedFileToken1");
txt.Text = await Windows.Storage.FileIO.ReadTextAsync(f);
真正的应用程序是一个访问.NETStandard 2.0 DLL的MVVM UWP应用程序(针对Fall Creators Update)。问题是我无法找到包含Windows.Storage命名空间的程序集以添加到我的DLL中。它在UWP中可用,当我尝试在System.IO中使用以下内容时,它允许我访问DLL中的路径拒绝错误:
string s = File.ReadAllText(filename);
我需要从DLL读取/写入文件。如果我在UWP应用程序的ViewModel中读/写但我不想这样做,它会工作。是否可以在我的DLL中添加对Windows.Storage的引用,或者是否有替代方法来访问DLL中的文件?
提前感谢您的帮助!
答案 0 :(得分:1)
这篇文章中的信息已经过时。请参阅for example here。
很遗憾,如果没有StorageFile
API,您将无法访问任何文件路径。当用户使用FilePicker
授予您访问文件的权限并且您获得StorageFile
形式的引用时,您仍然无法直接使用System.IO
类访问该相同路径
同时,您无法在.NET标准库中使用StorageFile
API。但是,您可以从System.IO.Stream
获取StorageFile
,然后可以在.NET标准库中使用该文件:
var readStream = await file.OpenStreamForReadAsync();
var writeStream = await file.OpenStreamForWriteAsync();
要访问此扩展方法,请务必将using System.IO;
添加到源代码文件的顶部。