2017-10-18 6 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にラップすることを検討してください。

OK

が、私がする必要がある、と私は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: 'アクセスできない

私は視覚スタジオを介してファイルdata.txtを作成しましたが、それはopeではありませんVS上でnと私は誰もそのファイルがVSではなく存在することを知っていると思う。

どうすればそのファイルに書き込むことができますか?

感謝。)

「読み取り同期と非同期メソッドの仕事の完璧な、それはパス Regione.RegNome = File.ReadAllText("Data/data1.txt");についての問題ではないので、」UIスレッドなしからの同期APIを呼び出すことがないと言って

エラー以外

答えて

2

他のエラーのうち、同期または非同期のAPIに関連しています。彼らは、書き込みしようとする場所への書き込みアクセス権がアプリにないため、すべて正当なエラーのように見えます。

ApplicationData.RoamingSettingsを使用して、見たチュートリアルのフラグを保存します。これを自分でファイル内で管理する必要はありません。詳細は、Store and retrieve app settings and dataを参照してください。

ms-appx:///Data/data1.txtのUnauthorizedAccessExceptionは、アプリケーションのインストール場所が読み取り専用であるためです。同期と非同期はここでは関係ありません。この場所からの読み込みはできませんが、この場所からの書き込みは機能しません。インストール場所はユーザー間でも共有されているので、ここに書き込むことができても、チュートリアルのようなユーザー固有のデータには適していません。これを書き込み可能なユーザー固有のファイルに保存する場合は、ApplicationData.LocalFolderまたはRoamingFolderをStore and retrieve app settings and dataのように使用します。

このアプリケーションはDocumentsフォルダに直接アクセスできません。適切な機能を使用すると、StorageFileクラスを介してそのフォルダに仲介されたアクセスを得ることができますが、アプリケーションはSystem.IO.Fileを使用して直接アクセスすることはできません。

+0

いつも私はファイルに何かを書いていますが、私が持っているファイルを削除して置き換えなければなりませんでしたか?あなたのリンクでは、私が "FileIOを待つ"と同じことをファイルに書き込むために使用しなければならないと言っているからです。WriteTextAsync(sampleFile);と私は同じアクセスエラー(私は私の既存のファイルに書き込もうとする場合)が、私はcreatefileasyncとは、すでにそれが私にそれを書くことができるものを置き換える場合。なぜそんなに難しいの?私はちょうどtxtの単語のシンプルなカップルを書いてみたいです... – Uopo

関連する問題