如何写入创建范围之外的文本文件?
例如,我的代码看起来有点像这样:try
{
StreamWriter file = new StreamWriter(path);
}
catch (NullReferenceException) //unable to create file
{
MessageBox.Show("Cannot create file");
//end program
}
file.WriteLine("hello world!") //error at compile time here
// "The name 'file' does not exist in current context"
如果无法创建文件,程序将立即结束 我可以这样做吗?
答案 0 :(得分:2)
遗憾的是,在这种情况下使用using
模式非常复杂。这是一个"坏"事...
StreamWriter file = null;
try
{
try
{
file = new StreamWriter(path);
}
catch (Exception ex) //unable to create file
{
MessageBox.Show("Cannot create file");
return;
}
file.WriteLine("hello world!");
}
finally
{
if (file != null)
{
file.Dispose();
}
}
请注意,出于以下两个原因,我不喜欢此代码:
您无法轻松使用using
模式。我认为using
模式非常重要
您认为如果您可以创建文件,那么一切都会正确...这是错误的。每次你写入文件的东西都可以去kaboom(抛出一个Exception
)......例如,磁盘可能已满了...即使只是关闭你写的文件也可以去kaboom(例如{{ 1}}是缓冲的,因此它不会立即写入。当你关闭它时,缓冲区被写入,但现在磁盘已满:-))
答案 1 :(得分:1)
this is可能会对您有所帮助..
StreamWriter file;
try
{
file = new StreamWriter(path);
}
catch (NullReferenceException) //unable to create file
{
MessageBox.Show("Cannot create file");
return;
//end program
}
file.WriteLine("hello world!") //error at compile time here
//"The name 'file' does not exist in current context"