我如何写入文本文件超出它定义的范围?

时间:2017-03-14 10:28:34

标签: c# file file-io

如何写入创建范围之外的文本文件?

例如,我的代码看起来有点像这样:

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"

如果无法创建文件,程序将立即结束 我可以这样做吗?

2 个答案:

答案 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"