windows 8 c#同时读取和写入文件

本文关键字:文件 读取 windows | 更新日期: 2023-09-27 17:52:43

我有一个将字节数组写入文件(StorageFile)的过程。该进程以周期性间隔运行,同时我需要在另一个进程中从文件的开头读取。这两个进程属于不同的类别。当我开始读取文件时,写操作失败,出现拒绝访问错误。

这里的文件是app文件夹中的StorageFile

write方法调用:

IRandomAccessStream randomStream = await targetFile.OpenAsync(FileAccessMode.ReadWrite);
Stream stream = randomStream.AsStreamForWrite();

read方法调用:

IRandomAccessStream randomStream = await targetFile.OpenAsync(FileAccessMode.Read);
Stream stream = randomStream.AsStreamForRead();

两个操作同时从不同的方法执行,导致访问被拒绝错误。似乎我可以在同一方法中使用读/写,同时打开写。但是如何从不同的方法?

我们是否有任何类似于早期的System.IO.FileShare,以便我可以明确地说,这个文件需要从同一应用程序中的另一个位置访问?

windows 8 c#同时读取和写入文件

除了切换到数据库类型设置之外,我建议缓冲对数组的写入,并根据缓冲区填充和/或特定的时间间隔将它们写入块中。除非您需要精确到毫秒的最新和最好的性能,否则我怀疑人们不会注意到性能影响。您必须调整缓冲区大小,以确保您给阅读器足够的时间来实际读取文件。

在阅读器端,您可以在文件上实现一个FileSystemWatcher对象。