2017-10-18 162 views
0

我需要同步写入文件,我知道有方法可以做到这一点,但这不是我的情况。在文件上同步写入不同的异常和访问被拒绝

从其他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");问题”

回答

2

除了错误说不能从UI线程没有调用同步API的其他错误与API是同步还是异步有关。它们看起来都像是合法的错误,因为应用程序无法写入它尝试写入的位置。

使用ApplicationData.RoamingSettings来存储您看过的教程标志。你不需要在文件中自己管理它。详细信息请参见Store and retrieve app settings and data

ms-appx:///Data/data1.txt上的UnauthorizedAccessException是因为应用程序的安装位置是只读的。同步与异步在这里不相关:阅读但不从这个位置写入预计会奏效。安装位置也是在用户之间共享的,所以即使应用程序可以在这里写入,它也不适合用户特定的数据,比如看到教程标志。如果要将其存储在可写入的用户特定文件中,请按照Store and retrieve app settings and data

中所述使用ApplicationData.LocalFolder或RoamingFolder该应用程序无法直接访问Documents文件夹。通过适当的功能,它可以通过StorageFile类访问该文件夹,但该应用程序不会使用System.IO.File直接访问。

+0

所以每次我想写一个文件我不得不删除并替换我有的文件?因为在你的链接中说我必须用文件写入与我所做的相同的事情“等待FileIO。WriteTextAsync(sampleFile);和我采取相同的访问错误(如果我尝试写入我的现有文件),但如果我createfileasync并替换已存在的那一个,它允许我写在它上面。为什么这么难?!我只想在txt中写一个简单的几个单词... – Uopo

相关问题