在Windows Server 2012 R2系统上,Kotlin程序用于FileChannel.tryLock()
在文件上保留排他锁,如下所示:
val fileRw = RandomAccessFile(file, "rw")
fileRw.channel.tryLock()
锁定后,我无法使用以下方式打开文件:
使用C#以编程方式,用于以下任何值FileShare
:
using (var fileStream = new FileStream(processIdPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var textReader = new StreamReader(fileStream))
{
textReader.ReadToEnd();
}
在命令行中,type
命令:
C:\some-directory>type file.txt
The process cannot access the file because another process has locked a portion of the file.
Internet Explorer(是的,我很拼命)
我可以用记事本打开它。
记事本如何能够打开其他没有其他东西的锁定文件?
记事本通过首先将文件映射到内存中来读取文件,而不是使用您尝试使用的其他编辑器可能使用的“常规”文件读取机制。即使文件具有基于范围的排他锁,此方法也可以读取文件。
您可以通过以下方式在C#中实现相同目的:
using (var f = new FileStream(processIdPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var m = MemoryMappedFile.CreateFromFile(f, null, 0, MemoryMappedFileAccess.Read, null, HandleInheritability.None, true))
using (var s = m.CreateViewStream(0, 0, MemoryMappedFileAccess.Read))
using (var r = new StreamReader(s))
{
var l = r.ReadToEnd();
Console.WriteLine(l);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句