如何解决以编程方式检查文件是否可以从 UWP 访问
给定文件选择器/选择器中的文件位置。如何检查 UWP 是否可以访问该文件?
解决方法
不确定你的意思,但在这里
public FileStream TryOpen(string filePath,FileMode fileMode,FileAccess fileAccess,FileShare fileShare,int maximumAttempts,int attemptWaitMS)
{
FileStream fs = null;
int attempts = 0;
// Loop allow multiple attempts
while (true)
{
try
{
fs = File.Open(filePath,fileMode,fileAccess,fileShare);
//If we get here,the File.Open succeeded,so break out of the loop and return the FileStream
break;
}
catch (IOException ioEx)
{
// IOExcception is thrown if the file is in use by another process.
// Check the numbere of attempts to ensure no infinite loop
attempts++;
if (attempts > maximumAttempts)
{
// Too many attempts,cannot Open File,break and return null
fs = null;
break;
}
else
{
// Sleep before making another attempt
Thread.Sleep(attemptWaitMS);
}
}
}
// Reutn the filestream,may be valid or null
return fs;
}
,
您可以在 Package.appxmanifest 中添加 broadFileSystemAccess 功能。 此外,BroadFileSystemAccess 是一项受限功能。可以在设置 > 隐私 > 文件系统中配置访问权限。
<Package
...
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap mp rescap">
...
<Capabilities>
<rescap:Capability Name="broadFileSystemAccess" />
</Capabilities>
然后您可以使用以下简单示例来检查文件是否可读可写。
var file =await StorageFile.GetFileFromPathAsync(path);
using (var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite))
{
bool read = stream.CanRead;
bool write = stream.CanWrite;
}
文件能否读取取决于很多因素。您应该考虑到这一点:
1.文件可能不存在
2.文件可能被其他进程锁定
3.某人/某物可以在应用程序执行期间更改对文件的访问
如果发生错误,上面的代码会引发异常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。