2017-10-18 111 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

相關問題