我收到此错误:进程无法访问文件 (...),因为它正被另一个进程使用。我试过使用
File.WriteAllText;
StreamWriter sw = new StreamWriter(myfilepath);
sw.Write(mystring);
sw.Close();
sw.Dispose();
Run Code Online (Sandbox Code Playgroud)
;
using (FileStream fstr = File.Create(myfilepath))
{
StreamWriter sw = new StreamWriter(myfilepath);
sw.Write(mystring);
sw.Close();
sw.Dispose();
fstr.Close();
}
Run Code Online (Sandbox Code Playgroud)
我想要做的就是访问一个文件,在上面写,然后关闭它。我可能犯了一个愚蠢的错误,但我想了解我做错了什么以及为什么。如何确保文件已关闭并且不会再次导致此错误。
到目前为止,在答案的帮助下,我做到了:
using (FileStream fstr = File.Open(myfilepath,FileMode.OpenOrCreate,FileAccess.ReadWrite))
{
StreamWriter sw = new StreamWriter(fstr);
sw.Write(mystring);
sw.Close();
}
Run Code Online (Sandbox Code Playgroud)
这似乎更好,因为如果我在第二次访问该页面时尝试访问另一个文件,它似乎会关闭/停止我的文件的进程。但是如果我第二次尝试访问同一个文件,它会再次给我错误。
我要感谢大家的帮助。事实上,除了这段代码之外,我发现在上面的代码之后我仍然在其他地方打开了一个 stremReader 。最后我改变了我之前的代码:
using (FileStream fstr = File.Open(myfile, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
StreamWriter sw = new StreamWriter(fstr);
sw.Write(mystring);
sw.Flush();
sw.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
在我的 StreamReader 上我这样做了:
StreamReader sr = new StreamReader(myfile);
string sometext = sr.ReadToEnd();
sr.Dispose();
Run Code Online (Sandbox Code Playgroud)
我也可以用这个:
File.ReadAllText(myfile);
Run Code Online (Sandbox Code Playgroud)
如果有什么我可以做得更好的事情,请告诉我。非常感谢。
| 归档时间: |
|
| 查看次数: |
4168 次 |
| 最近记录: |