うわー、この方法は必要以上に複雑です。次のコードが機能する理由を誰かが私に説明できますか?
string stringToWrite = "SomeStuff";
Windows.ApplicationModel.Package package = Windows.ApplicationModel.Package.Current;
Windows.Storage.StorageFolder installedLocation = package.InstalledLocation;
var files = await installedLocation.GetFilesAsync();
foreach (Windows.Storage.StorageFile sf in files)
{
if (sf.Name.Equals("log.txt"))
{
await FileIO.AppendTextAsync(sf, stringToWrite);
}
}
それでも、AccessDeniedでは次のことが失敗します。
Windows.ApplicationModel.Package package = Windows.ApplicationModel.Package.Current;
Windows.Storage.StorageFolder installedLocation = package.InstalledLocation;
var log = await installedLocation.GetFileAsync("log.txt");
await FileIO.AppendTextAsync(log, stringToWrite);
唯一の違いは、GetFilesAsyncメソッドによって返されるファイルをループすることと、ファイルを名前で取得することです。ちなみに、GetFileAsyncでlog.txtのスペルを間違えると例外が発生するため、ファイルを名前で取得することはできます。
とても紛らわしい....