C# 文件xxxxx 正由另一进程使用,因此该进程无法访问该文件!!!!!

源代码:
try
{
FileStream fsr = new FileStream(HtmlFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
StreamReader sr = new StreamReader(fsr, Encoding.GetEncoding("gb2312"));

string str = sr.ReadToEnd();
sr.Close();
sr.Dispose();
fsr.Close();
//fsr.Dispose();

str = getTotalStr(str, xmlFile, xPath);
str = str.Replace("utf-8", "gb2312").Replace("UTF-8", "gb2312");

FileStream fsw = new FileStream(HtmlFilePath, FileMode.Open, FileAccess.Write, FileShare.ReadWrite);//此句引发异常
StreamWriter sw = new StreamWriter(fsw, Encoding.GetEncoding("gb2312"));
sw.Write(str);

sw.Close();
sw.Dispose();
fsw.Close();
fsw.Dispose();

}
catch (Exception e)
{
//e.Message=="文件xxxxx 正由另一进程使用,因此该进程无法访问该文件。";
}

你这样的写法是有问题的,应该将善后操作放到finnaly块中,
在你得这个程序中,如果在Sw.Close();语句执行以前程序抛出了一场,那么streamwriter和filestream是不能够正常关闭的,这样,当下一次执行这个方法的时候,就会出现无法访问文件的问题。
try
{...}
catch
{...}
finnaly
{
sw.close();
sw.dispose();
fsw.close();
fsw.dispose();
}

另外,建议你用using语句块来代替手动调用dispose方法
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-08-03
在任务管理器里面把这个项目名称的进程关掉旧OK拉.

C# 文件xxxxx 正由另一进程使用,因此该进程无法访问该文件!!!
你这样的写法是有问题的,应该将善后操作放到finnaly块中,在你得这个程序中,如果在Sw.Close();语句执行以前程序抛出了一场,那么streamwriter和filestream是不能够正常关闭的,这样,当下一次执行这个方法的时候,就会出现无法访问文件的问题。try {...} catch {...} finnaly { sw.close();sw.dispos...

相似回答