C# 如何检查文本文件是否正在使用?
我有一个文本文件,我想检查它是否已经打开。 问题是,可以多次打开该文件,没有例外 我试过:C# 如何检查文本文件是否正在使用?,c#,stream,C#,Stream,我有一个文本文件,我想检查它是否已经打开。 问题是,可以多次打开该文件,没有例外 我试过: stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None); 也不例外 我也试过了 using (Stream stream = new FileStream("MyFilename.txt", FileMode.Open)) 也不例外 甚至 System.Diagnostics.Process.GetProcesse
stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
也不例外
我也试过了
using (Stream stream = new FileStream("MyFilename.txt", FileMode.Open))
也不例外
甚至
System.Diagnostics.Process.GetProcessesByName("MyFilename.txt").Length < 1
System.Diagnostics.Process.getProcessByName(“MyFilename.txt”).Length<1
但是,即使文件处于打开状态,也会返回0
MyFilename.txt
只是一个名称,在真正的代码中,它是真正的文件路径
我能写些什么
谢谢!
Grace是的,有一种方法可以像
protected virtual bool IsFileUsed(FileInfo file)
{
FileStream stream = null;
try
{
stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
}
catch (IOException)
{
//the file is unavailable because it is:
//still being written to
//or being processed by another thread
//or does not exist (has already been processed)
return true;
}
finally
{
if (stream != null)
stream.Close();
}
//file is not in use
return false;
}
如果记事本没有专门锁定文本文件,则需要使用不同的方法
Process[] pList = Process.GetProcessesByName("notepad");
foreach(Process p in pList)
{
if(p.MainWindowTitle.Contains("MyFilename.txt")
......
}
当然,这不是一个愚蠢的解决方案。我可以用写字板或其他文本编辑器打开文件,如果没有锁,我们会再次遇到同样的问题
但是,如果您成功以独占方式打开该文件,则保存其更改是记事本问题@Rahul:复制粘贴代码时,请确保链接到原始帖子。这里有很多有用的信息-我曾经在我自己的问题中尝试过同样的东西,这就是为什么我在这里提到这些代码。我甚至从你提到的同一篇文章中得到了这些代码。谢谢,但我已经在我的研究中读到了这些。这里没有什么帮助,我想是因为可以多次打开记事本文件。你知道另一种不会锁定的类型吗,比如记事本?对不起,不,这是一种试用的方法