做文件讀寫(xiě)時(shí),我們難免會(huì)遇到文件讀寫(xiě)故障赔蒲,例如經(jīng)常會(huì)碰到的一個(gè)問(wèn)題:
System.IO.IOException: 文件“XXX”正由另一進(jìn)程使用,因此該進(jìn)程無(wú)法訪問(wèn)此文件力穗。
下面談下筆者對(duì)這類(lèi)問(wèn)題的看法:
- 首先是列舉我們習(xí)慣用的讀寫(xiě)文件的方式:
<code>FileStream fs = new FileStream(url);
StreamReader sr = new StreamReader(fs);
StringBuilder sb = new StringBuilder();
while (!sr.EndOfStream)
{
sb.AppendLine(sr.ReadLine());
}</code>
- 現(xiàn)在列舉修改之后比較合理的寫(xiě)法:
<code>
FileStream fs = new FileStream(url, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);
StringBuilder sb = new StringBuilder();
while (!sr.EndOfStream)
{
sb.AppendLine(sr.ReadLine());
}</code>
-
總結(jié):
這樣的情況,不單要以只讀方式打開(kāi)txt文件萍虽,而且睛廊,需要共享鎖。還必須要選擇flieShare方式為ReadWrite杉编。因?yàn)殡S時(shí)會(huì)有其他程序?qū)ζ溥M(jìn)行寫(xiě)操作超全。
轉(zhuǎn)載自:c# 讀寫(xiě)文件時(shí)文件正由另一進(jìn)程使用,因此該進(jìn)程無(wú)法訪問(wèn)該文件