[英]C# File.ReadAllText The process cannot access the file because it is being used by another process
編輯 xml 內容后,我的代碼一直顯示“該進程無法訪問文件‘路徑’,因為它正被另一個進程使用。” 得到錯誤。 等待您的解決方案。
var regex = new Regex(@"[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000-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。 IE:
var regex = new Regex(@"[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000-x10FFFF]", RegexOptions.Compiled);
string xml = regex.Replace(File.ReadAllText(file.FullName), String.Empty);
File.WriteAllText(file.FullName, xml);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.