写入文件 ASP.NET C# 并且之后不锁定它们

Jen*_*nha 5 c# asp.net

我收到此错误:进程无法访问文件 (...),因为它正被另一个进程使用。我试过使用 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)

这似乎更好,因为如果我在第二次访问该页面时尝试访问另一个文件,它似乎会关闭/停止我的文件的进程。但是如果我第二次尝试访问同一个文件,它会再次给我错误。

Jen*_*nha 1

我要感谢大家的帮助。事实上,除了这段代码之外,我发现在上面的代码之后我仍然在其他地方打开了一个 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)

如果有什么我可以做得更好的事情,请告诉我。非常感谢。