如果被另一个进程使用,有什么方法可以读取文件?
XmlTextReader reader = new XmlTextReader(inpXMLfileAsString);
如果被另一个进程使用,有什么方法可以读取文件?
XmlTextReader reader = new XmlTextReader(inpXMLfileAsString);
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
不能在其他进程中打开它
一种可能的解决方案是使用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"));
当文件以只读模式打开时,其他进程仍然可以正常访问文件。一个例子是读取一个日志文件,而该日志文件是打开的以供写入并由某个(其他)进程填充。