C#文件.ReadAllText进程无法访问该文件,因为另一个进程正在使用该文件



编辑xml内容后,我的代码一直在说"进程无法访问文件"path",因为另一个进程正在使用该文件"得到错误。正在等待您的解决方案。

var regex = new Regex(@"[^x09x0Ax0Dx20-xD7FFxE000-xFFFDx10000-x10FFFF]", RegexOptions.Compiled);
var memStream = new MemoryStream();
using (Stream sr = File.Open(file.FullName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
{
sr.CopyTo(memStream);
sr.Close();
sr.Dispose();
}
using (Stream sr = File.Open(file.FullName, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
{
var text = Encoding.ASCII.GetString(memStream.ToArray());
var result = regex.Replace(text, String.Empty);
byte[] bArray = Encoding.UTF8.GetBytes(result);
sr.Write(bArray, 0, bArray.Length);
sr.Close();
sr.Dispose();
memStream.Close();
memStream.Dispose();
}
string xml = File.ReadAllText(xmlFile.FullName); 

(在此处添加注释会很混乱(

如果这样做有效,它会不会在XML文件的末尾留下垃圾并使其无效?为什么不简单地ReadAllText、replace和WriteAllText呢。即:

var regex = new Regex(@"[^x09x0Ax0Dx20-xD7FFxE000-xFFFDx10000-x10FFFF]", RegexOptions.Compiled);
string xml = regex.Replace(File.ReadAllText(file.FullName), String.Empty);
File.WriteAllText(file.FullName, xml); 

最新更新