如果我有以下情况:
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) 我收到此错误:进程无法访问文件 (...),因为它正被另一个进程使用。我试过使用
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)
这似乎更好,因为如果我在第二次访问该页面时尝试访问另一个文件,它似乎会关闭/停止我的文件的进程。但是如果我第二次尝试访问同一个文件,它会再次给我错误。