UWP - 在修改文件时退出RandomAccessStream

时间:2018-05-30 08:30:50

标签: c# uwp stream .net-core file-handling

我正在尝试在添加新行时读取文件的内容。 为此,我有以下代码。

using (var inputStream = await file.OpenAsync(FileAccessMode.Read, StorageOpenOptions.AllowOnlyReaders))
        using (var streamReader = new StreamReader(inputStream.AsStream()))
        {
            string line;
            while ((line = streamReader.ReadLine()) != null)
            {
            }
            streamReader.Close();
            inputStream.Dispose();
        }

问题是,只要文件被修改,输入流的大小为0,循环就会退出。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

对于任何有同样问题的人来说,这似乎都有效。

重要的部分是oldsize变量。你需要有if子句,否则它不会工作。

using (var randAccessStream = await file.OpenAsync(FileAccessMode.Read, StorageOpenOptions.AllowReadersAndWriters))
        using (var inputStream = randAccessStream.AsStream())
        using (var streamReader = new StreamReader(inputStream))
        {
            var oldsize = randAccessStream.Size;
            string line;
            while ((line = streamReader.ReadLine()) != null)
            {
                if (oldsize != randAccessStream.Size) //Useless but seems to fix the bug
                {
                    oldsize = randAccessStream.Size;
                    await Task.Delay(100);
                }
            }

            await inputStream.FlushAsync();
            streamReader.Close();
            inputStream.Dispose();
            randAccessStream.Dispose();
        }