File.ReadAllText(): System.UnauthorizedAccessException: '访问路径被拒绝。'
Posted
技术标签:
【中文标题】File.ReadAllText(): System.UnauthorizedAccessException: \'访问路径被拒绝。\'【英文标题】:File.ReadAllText(): System.UnauthorizedAccessException: 'Access to the path is denied.'File.ReadAllText(): System.UnauthorizedAccessException: '访问路径被拒绝。' 【发布时间】:2021-06-19 10:17:13 【问题描述】:这是我遇到问题的代码的 sn-p:
public OpenPage(string filePath, int? index, object jobject)
InitializeComponent();
File.SetAttributes(filePath, FileAttributes.Normal); // Here is where error in title occurs
var readText = File.ReadAllText(filePath); // Also occurs here
DisplayAlert("Alert", readText, "Ok");
我正在创建一个 UWP Xamarin.Forms 应用程序,该应用程序需要从选定目录(C: 驱动器上的任何内容)读取文件。虽然当我没有从本地缓存/AppData 中选择文件时,标题中出现错误。
查看 *** 中的其他类似帖子(例如 Why is access to the path denied?)非常有助于了解有关该主题的更多信息,尽管有关此错误的许多问题都已过时。
在上面的帖子中,有人说不能将目录作为 File.ReadAllText() 的参数传递。
有什么解决办法吗?我需要访问 C: 驱动器上的文件。作为参考,我调试时构造函数中的filePath是“C:\Users\ianpc\Desktop\config file clones\te0_ptt_wog.json”。
【问题讨论】:
***.com/questions/33082835/… 【参考方案1】:有什么解决办法吗?我需要访问 C: 驱动器上的文件。作为参考,我调试时构造函数中的filePath是“C:\Users\ianpc\Desktop\config file clones\te0_ptt_wog.json”。
问题是UWP应用运行在沙盒环境中,所以我们不能使用System.IO
命名空间直接访问带路径的文件。
对于 xamarin 表单应用,我们建议您使用 Windows Storage api 访问带有路径的文件,在此之前,您需要启用 broadFileSystemAccess
功能。
例如
public interface FileAccessInterface
Task<string> GetFileText(string filePath);
实施
[assembly: Dependency(typeof(FileAccessInterfaceImplementation))]
namespace XamarinPicker.UWP
public class FileAccessInterfaceImplementation : FileAccessInterface
public async Task<string> GetFileText(string filePath)
var stringContent = "";
try
var file = await StorageFile.GetFileFromPathAsync(filePath);
if (file != null)
stringContent = await Windows.Storage.FileIO.ReadTextAsync(file,Windows.Storage.Streams.UnicodeEncoding.Utf8);
catch (Exception ex)
Debug.WriteLine(ex.Message);
return stringContent;
用法
var text = await DependencyService.Get<FileAccessInterface>().GetFileText(@"C:\Users\xxxx\Desktop\test.txt");
更多信息请参考此案例reply。
【讨论】:
我会试试这个实现;非常感谢您提供的信息! 我实际上收到一个错误:“IAsyncOperationSystem.Runtime.WindowsRuntime.dll
库,请参考此document 并手动添加。以上是关于File.ReadAllText(): System.UnauthorizedAccessException: '访问路径被拒绝。'的主要内容,如果未能解决你的问题,请参考以下文章
关于File.ReadAllText Method (String)
ERROR: “System.Web.Mvc.Controller.File(string, string, string)”是一个“方法”