Как я могу сделать перекодирование без назначения нулевого значения? - PullRequest
0 голосов
/ 16 июня 2010

Как я могу сделать ниже без присвоения нулевого значения "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 ]

4 голосов
/ 16 июня 2010

Необходимо убедиться, что Tex назначено в каждом пути кода.

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

Обратите внимание, что метод AppendText создаст файл, если он не существует.
Следовательно, вам не нужен оператор if.

3 голосов
/ 16 июня 2010
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 голосов
/ 16 июня 2010

Замените то, что у вас есть, чем-то вроде этого.

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, нет кода, который не будет компилироваться (как в вашем примере), и вы получите правильное распределение ресурсов.

1 голос
/ 16 июня 2010

Редактировать: я всегда обрезал файл:)

        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
        }
1 голос
/ 16 июня 2010

Вы не можете.Если f.Exists имеет значение false, Tex никогда не устанавливается до того, как он будет использован после блока if, поэтому вы должны присвоить ему что-то.Итак, вы уверены, что не просто хотите присвоить Tex в блоке if?

1 голос
/ 16 июня 2010
Tex = f.Exists? f.AppendText(): f.CreateText();
0 голосов
/ 16 июня 2010

Если вы не создадите экземпляр вашего StreamWriter, он будет бомбить вас.Вам нужно присвоить значение, чтобы получить его для компиляции, но без экземпляра он не будет делать то, что, как вы думаете, он сделает.

Возможно, упростите и рассмотрите возможность использования File.WriteAllText ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...