使用XmlTextReader时,确定另一个进程是否正在访问该文件

时间:2014-06-04 18:00:29

标签: c# xmltextreader

如果被另一个进程使用,有没有办法读取该文件?

XmlTextReader reader = new XmlTextReader(inpXMLfileAsString);

2 个答案:

答案 0 :(得分:0)

一种可能的解决方案是使用FileStream class以便以只读模式打开文件并将流传递给XmlTextReader class

var fileStream = new FileStream("c:\\location\\file.xml", FileMode.Open, FileAccess.Read);
var xmlTextReader = new XmlTextReader(fileStream);

或直接使用File.OpenRead method

var xmlTextReader = new XmlTextReader(File.OpenRead("c:\\location\\file.xml"));

当文件以只读模式打开时,其他进程仍然可以正常访问该文件。一个例子是读取日志文件,而日志文件打开以供写入并由某些(其他)进程填充。

答案 1 :(得分:0)

Depende del modo en el que el otroprocesoabrióelarchivo。 例如我以这种方式打开

using (FileStream stream = new FileStream(inpXMLfileAsString, FileMode.Create, FileAccess.Write, FileShare.Read))
{
using (XmlTextWriter reader = new XmlTextWriter(stream,Encoding.UTF8))
{
//Here can write
}
}

您可以使用

在其他过程中打开它
using (FileStream stream = new FileStream(inpXMLfileAsString, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (XmlTextReader reader = new XmlTextReader(stream))
{
//Here can read
}
}

但是如果文件打开FileShare.None,则无法在其他进程中打开它