我正在尝试编写一个非常简单的程序,它在启动时读取txt文件。该文件位于“ApplicationData.Current.LocalFolder”中,因为它应该是我可以在不明确告知用户的情况下访问的内容。但是,在我尝试检查是否存在和创建文件之后,我在第二个方法的第二行的'file.OpenStreamForReadAsync()'处收到访问被拒绝的异常。
从检查过程传递了StorageFile对象,因此我认为我能够避免两个对象尝试打开同一文件的情况。但问题仍然存在。
public async Task<StorageFile> checkConfig()
{
StorageFolder localFolder = ApplicationData.Current.LocalFolder;
if (await localFolder.TryGetItemAsync("ifthen.txt") != null)
return await localFolder.GetFileAsync("ifthen.txt");
else
return await localFolder.CreateFileAsync("ifthen.txt");
}
public async void load()
{
Windows.Storage.StorageFile file = await checkConfig();
using (var input = await file.OpenStreamForReadAsync())
using (var dataReader = new StreamReader(input))
{
...
}
}
此外,问题仅发生在Release Build中。无论启动程序之前文件是否存在,Debug Build始终都能正常工作。