UWP/C#-在读取文件之前,如何等待文件出现



我正在写入一个文件,然后在之后立即读取它

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);

最新更新