相关疑难解决方法(0)

Stream.Dispose总是调用Stream.Close(和Stream.Flush)

如果我有以下情况:

StreamWriter MySW = null;
try
{
   Stream MyStream = new FileStream("asdf.txt");
   MySW = new StreamWriter(MyStream);
   MySW.Write("blah");
}
finally
{
   if (MySW != null)
   {
      MySW.Flush();
      MySW.Close();
      MySW.Dispose();
   }
}
Run Code Online (Sandbox Code Playgroud)

MySW.Dispose()即使提供了,我可以打电话并跳过关闭吗?是否存在任何不能按预期工作的Stream implament(如CryptoStream)?

如果没有,那么以下只是错误的代码:

using (StreamWriter MySW = new StreamWriter(MyStream))
{
   MySW.Write("Blah");
}
Run Code Online (Sandbox Code Playgroud)

.net c# using

62
推荐指数
3
解决办法
4万
查看次数

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

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

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

c# asp.net

5
推荐指数
1
解决办法
4168
查看次数

标签 统计

c# ×2

.net ×1

asp.net ×1

using ×1