如何在写入期间锁定文件以使其在打开时无法读取?

Posted

技术标签:

【中文标题】如何在写入期间锁定文件以使其在打开时无法读取?【英文标题】:How lock a file during write so that it cannot be read while open? 【发布时间】:2017-07-26 22:13:22 【问题描述】:

在过去,我会在打开文件时为文件设置共享模式。 UWP有没有类似的概念?似乎没有什么明显的。

【问题讨论】:

您始终可以使用CreateFile2 打开文件,请求0dwShareMode(即不共享)。 【参考方案1】:

FileShare 类属于 .net API,但在 uwp 应用程序中也支持。 System.IO命名空间有很多支持uwp应用的API,详细可以参考System.IO namespaces for UWP apps。所以可以使用FileStream读写文件,将FileShare设置为none会导致文件无法读取。例如:

StorageFolder localfolder = Windows.Storage.ApplicationData.Current.LocalFolder;
StorageFile samplefile = await localfolder.GetFileAsync("sample.txt");
FileStream stream = new FileStream(samplefile.Path, FileMode.Open, FileAccess.Read, FileShare.None);

【讨论】:

以上是关于如何在写入期间锁定文件以使其在打开时无法读取?的主要内容,如果未能解决你的问题,请参考以下文章

如何锁定文件并避免在写入时读取

如何更改我的 C++ 代码以使其在 C 中可用?

如何在 4.5 之后附加零以使其在 PHP 中成为 4.50? [复制]

为啥我的网络应用程序无法在打开时重新加载

如何隐藏 DefaultTableModel 中的特定列以使其在表中显示?

如何从 C 中读取 Torch 张量 [关闭]