2017-10-18 13 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 : '액세스가 negato

나는 visual studio를 통해 파일을 만들었지 만, 그것은 ope가 아니다. VS에 n과 나는 그 파일이 VS보다는 존재한다는 것을 아무도 모른다 고 생각한다.

마지막으로 어떻게 파일에 쓸 수 있습니까? 오류 이외에

답변

2

는 UI 스레드 없음에서 동기 API를 호출하지 말

감사합니다.)

"는 Regione.RegNome = File.ReadAllText("Data/data1.txt"); 경로에 대한 문제가 아니다, 그래서 읽기 동기 및 비동기 방식 일 완벽한" 다른 오류 중 동기 또는 비동기 API와 관련이 있습니다. 앱은 쓰기를 시도하는 위치에 쓸 수있는 권한이 없으므로 모두 합법적 인 오류처럼 보입니다.

자습서 플래그를 저장하려면 ApplicationData.RoamingSettings을 사용하십시오. 파일에서 직접 관리 할 필요가 없습니다. 자세한 내용은 Store and retrieve app settings and data을 참조하십시오.

ms-appx : ///Data/data1.txt의 UnauthorizedAccessException은 앱의 설치 위치가 읽기 전용이기 때문입니다. 동기화 대 비동기는 여기서 관련이 없습니다.이 위치에서 읽기는 가능하지만 쓰기가 작동하지 않아야합니다. 설치 위치는 사용자간에 공유되기 때문에 앱이 여기에 글을 쓸 수 있다고해도 튜토리얼보기 플래그와 같은 사용자 별 데이터에는 적합하지 않습니다. 이 파일을 쓰기 가능한 사용자 별 파일에 저장하려면 Store and retrieve app settings and data

에 설명 된대로 Application.LocalFolder 또는 RoamingFolder를 사용하십시오. 응용 프로그램은 Documents 폴더에 직접 액세스 할 수 없습니다. 적절한 기능을 사용하면 StorageFile 클래스를 통해 해당 폴더에 중개 된 액세스 권한을 얻을 수 있지만 응용 프로그램은 System.IO.File을 사용하여 직접 액세스 할 수 없습니다.

+0

그래서 매번 파일에 뭔가를 쓰고 싶습니다. 삭제하고 파일을 대체해야 했습니까? 왜냐하면 당신의 링크에서 내가 "FileIO를 기다렸던 것과 똑같은 일을 파일에 써야한다고 말하기 때문입니다.WriteTextAsync (sampleFile); 그리고 내가 동일한 액세스 오류 (만약 내가 내 기존 파일에 쓰려고),하지만 내가 createfileasync 및 대체 이미 하나의 기존의 그것을 쓸 수 있습니다. 왜 그렇게 어려운거야?! 나는 txt에 간단한 단어 몇 개를 쓰고 싶다. – Uopo