我正在写入一个文件,然后在之后立即读取它
await FileIO.WriteTextAsync(file, command, Windows.Storage.Streams.UnicodeEncoding.Utf8);
var readFile = await ApplicationData.Current.TemporaryFolder.GetFileAsync(WEB_LOG);
但是,GetFileAsync
抛出一个FileNotFoundException
,因为该文件尚未出现。如果我使用调试器并在WriteTextAsync
完成后等待一段时间,我可以看到文件出现在文件夹中,并且GetFileAsync
不会引发异常。如何等待文件被完全写入并出现在文件夹中,以便GetFileAsync
不会引发异常?
您可以尝试使用StorageFolder。TryGetItemAsync(字符串(检查文件是否已准备好。如果找不到指定的文件或文件夹,此方法将返回null,而不是引发FileNotFoundException。
像这样:
var target= await ApplicationData.Current.TemporaryFolder.TryGetItemAsync("FileName");
if (target != null)
{
// file is ready
}
else
{
//wait and try to get the file again
}
没有函数,它允许您等待特定文件可供读取。你必须检查它是否还没有准备好,然后等待。。。
await FileIO.WriteTextAsync(file, command, Windows.Storage.Streams.UnicodeEncoding.Utf8);
while (true)
{
try
{
using (FileStream inputStream = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.None))
if (inputStream.Length > 0)
break;
}
catch (Exception)
{
await Task.Delay(50);
}
}
var readFile = await ApplicationData.Current.TemporaryFolder.GetFileAsync(WEB_LOG);