如何在不指定空值的情况下重新编码?

时间:2010-06-16 14:19:32

标签: c# .net visual-studio visual-studio-2008

如何在不指定空值“Tex = null”的情况下执行此操作?

   static void Main(string[] args)
        {
            FileInfo f = new FileInfo("C:/temp/Arungg.txt");
            StreamWriter Tex;
            Tex = null;
            if (!f.Exists)
            {
                f.CreateText();
            }
            else
            {
                Tex = f.AppendText();
            }
                Tex.WriteLine("Test1");
                Tex.WriteLine("Test2");
                Tex.Write(Tex.NewLine);
                Tex.Close();
                Console.WriteLine(" The Text file named Arungg is created ");


        }

7 个答案:

答案 0 :(得分:4)

您需要确保在每个代码路径中分配Tex

        if (!f.Exists)
        {
            Tex = f.CreateText();
        }

请注意,如果文件不存在,AppendText方法将创建该文件 因此,您根本不需要if语句。

答案 1 :(得分:3)

static void Main(string[] args)
    {
        FileInfo f = new FileInfo("C:/temp/Arungg.txt");

        StreamWriter Tex = f.Exists ? f.AppendText() : f.CreateText();

        Tex.WriteLine("Test1");
        Tex.WriteLine("Test2");
        Tex.Write(Tex.NewLine);
        Tex.Close();

        Console.WriteLine(" The Text file named Arungg is created ");
    }

答案 2 :(得分:2)

用这样的东西替换你拥有的东西。

using (StreamWriter Tex = new StreamWriter("C:/temp/Arungg.txt", true, Encoding.UTF8))
{
    Tex.WriteLine("Test1");
    Tex.WriteLine("Test2");
    Tex.Write(Tex.NewLine);
    Console.WriteLine(" The Text file named Arungg is created ");
} 

如果文件不存在,则会创建该文件,如果存在,则将其打开以进行追加。不需要if,没有编译的代码(如您的样本中所示),并且您可以正确处理资源。

答案 3 :(得分:1)

Tex = f.Exists? f.AppendText(): f.CreateText();

答案 4 :(得分:1)

你做不到。如果f.Exists为false,则在if块之后使用Tex之前永远不会设置,所以你必须给它一些东西。

我也很确定在这种情况下你也会得到一个NullReferenceException,所以你确定你不仅仅意味着在你的if块中分配Tex吗?

答案 5 :(得分:1)

编辑:我总是截断文件:)

        var f = new FileInfo(@"c:\temp\Arungg.txt");
        var writer = f.Exists ? f.AppendText() : new StreamWriter(f.OpenWrite());
        using (writer)
        {
            writer.WriteLine("Test1");
            writer.WriteLine("Test2");
            writer.WriteLine(); // No need for NewLine
        }

答案 6 :(得分:0)

如果你没有实例化你的StreamWriter,它会轰炸你。你需要分配一个值才能让它编译,但是如果没有实例,它就不会按你认为的那样去做。

也许是简化和consider using File.WriteAllText

相关问题