0

如果被另一个进程使用,有什么方法可以读取文件?

XmlTextReader reader = new XmlTextReader(inpXMLfileAsString);
4

2 回答 2

0

Depende del modo en el que el otro proceso abrió el archivo。例如我以这种方式打开

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不能在其他进程中打开它

于 2014-06-04T18:33:18.990 回答
0

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

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

或直接使用File.OpenRead 方法

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

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

于 2014-06-04T18:11:43.717 回答