繁体   English   中英

在文件上同步写入不同的异常并拒绝访问

[英]synchronous write on a file different exceptions and access denied

我需要同步写入文件,我知道有一些方法可以做到异步,但这不是我的情况。

从另一个page.xml导航后,我进入了我的主页,并且在onnavigated方法中,我需要在file.txt中写入我从上一页获取的文本。 (这就是我认为从应用程序的第一次打开保存数据的方式,并且每次应用程序打开时,它将加载这些数据以不再进行教程了)

protected override void OnNavigatedTo(NavigationEventArgs e)
        {
Regione = e.Parameter as regione;
string ciccio = "" + Regione2.RegNome.ToString() + "," + Regione2.RegLat.ToString() + "," + Regione2.regLon.ToString();
            //File.WriteAllText("Data/data1.txt", ciccio);
            File.WriteAllText("C:/Users/giuli/Documents/Source/xxx/XXX/XXX/Data/data1.txt", ciccio);
 }

如果我尝试使用File.WriteAllText("C:/Users/giuli/Documents/Source/xxx/XXX/XXX/Data/data1.txt", ciccio); 我收到一个异常消息,告诉我无法使用同步方法:“不应在UI线程上执行同步操作。请考虑将此方法包装在Task.Run中。”

好的,但是我需要,我尝试使用File.WriteAllText("Data/data1.txt", ciccio); 我得到一个System.UnauthorizedAccessException:访问路径被拒绝

如果我尝试一些异步方法

Windows.Storage.StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;
            StorageFile File2 = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Data/data1.txt"));
await Windows.Storage.FileIO.WriteTextAsync(File2, ciccio1);

我得到一个System.UnauthorizedAccessException:'Accesso negato

我是通过Visual Studio创建的data.txt文件,它在VS上没有打开,我认为没有人知道该文件而不是VS。

我最终如何在该文件上写?

谢谢 。)

“读取同步和异步方法可以完美工作,因此路径Regione.RegNome = File.ReadAllText("Data/data1.txt");并不是问题Regione.RegNome = File.ReadAllText("Data/data1.txt");

除了错误消息说不从UI线程调用同步API之外,您遇到的其他任何错误均与该API是同步还是异步有关。 它们都看起来像合法错误,因为该应用无权对其尝试写入的位置进行写入。

使用ApplicationData.RoamingSettings来存储您的教程可见标志。 您无需自己在文件中进行管理。 有关详细信息,请参见存储和检索应用程序设置和数据

ms-appx:///Data/data1.txt上的UnauthorizedAccessException是因为应用程序的安装位置是只读的。 同步与异步在这里无关紧要:从该位置读取但不写入是可以的。 安装位置也在用户之间共享,因此即使应用程序可以在此处编写,对于用户特定的数据(例如,“ see-the-tutorial”标志)也不是一个好地方。 如果要将其存储在用户可写的可写文件中,请按照存储中所述使用ApplicationData.LocalFolder或RoamingFolder 并检索应用程序设置和数据

该应用无法直接访问“文档”文件夹。 有了适当的功能,它可以通过StorageFile类对该文件夹进行代理访问,但该应用将无法使用System.IO.File直接访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM