private string GetFileContent(string path)
{
if(File.Exists(HttpContext.Current.Server.MapPath(path)))
{
FileStream fs=null;
try
{
fs = new FileStream(HttpContext.Current.Server.MapPath(path), FileMode.Open, FileAccess.Read);
using (TextReader tr = new StreamReader(fs))
{
fs.Flush();
return tr.ReadToEnd();
}
}
finally
{
fs.Close();
}
}
}
如果将FileStream fs分配给null代码正在运行而没有警告,但我不想将filestream分配给null,即在使用Statement时fs = null。
那么,不分配空值的正确写法是什么?
答案 0 :(得分:2)
摆脱try
/ finally
:
using (FileStream fs = new FileStream(HttpContext.Current.Server.MapPath(path), FileMode.Open, FileAccess.Read))
using (TextReader tr = new StreamReader(fs))
{
fs.Flush();
return tr.ReadToEnd();
}
using
已经在做这样的事情:
{
FileStream fs = new FileStream(HttpContext.Current.Server.MapPath(path), FileMode.Open, FileAccess.Read);
try
{
// code inside the `using` goes here
}
finally
{
fs.Dispose();
}
}
从本质上讲,处置遗嘱将关闭流。
有关using
的更多信息,请参见this question。