ошибка записи текста в текстовый файл построчно путем добавления в C #, но в файле ничего не было

Я работаю над C # на Win7 VS 2012.

Мне нужно писать текст в текстовый файл построчно, добавляя.

 StreamWriter ofile = new StreamWriter(@"C:\myPath\my_data_output.txt", true);

  ofile.WriteLine(myString + "\t");

Но в выходном файле ничего нет.

Любая помощь будет оценена по достоинству.


person user2420472    schedule 31.01.2014    source источник


Ответы (4)


Включите свой код в предложение using. Это вызовет метод Dispose для класса StreamWriter. Метод Dispose вызывает метод Flush, который записывает в поток.

Ваш код будет выглядеть так:

using (StreamWriter ofile = 
           new StreamWriter(@"C:\myPath\my_data_output.txt", true)
{
    ofile.WriteLine(myString + "\t"); 
}

Вы всегда можете вызвать метод flush в любое время.

person jose delgado    schedule 31.01.2014

или лучше ofile.Close (); который закрывает поток, а также очищает его, когда вы закончите с ним ссылка MSDN

person Lior    schedule 31.01.2014
comment
Мне нужно написать много строк по циклу. Если я буду использовать close () на каждой итерации, будет ли повышена производительность? Спасибо - - person user2420472; 31.01.2014
comment
просто напишите все строки и после цикла закройте его. - person Lior; 31.01.2014

Я предлагаю использовать статический класс System.IO.File, который позаботится о промывке и удалении, вам просто нужно вызвать метод AppendAllText следующим образом:

System.IO.File.AppendAllText(@"C:\myPath\my_data_output.txt", myString + "\t");

И если вам нужно вызывать его много раз, я предлагаю использовать StringBuilder:

StringBuilder sb = new StringBuilder();
while(condition)
{
    //Your loop body

    sb.AppendText(myString + "\t");
}
File.AppendAllText(@"C:\myPath\my_data_output.txt",sb.ToString());
person VahidNaderi    schedule 31.01.2014

У вас есть несколько вариантов:

StringBuilder sb = new StringBuilder();
while(SOME CONDITION)
{
    sb.AppendLine("YOUR STRING"); 

}
// Set boolean to true to append to the existing file.
using (StreamWriter outfile = new StreamWriter(mydocpath + @"\AllTxtFiles.txt", true))
{
    outfile.WriteLine(sb.ToString());
}



//Append new text to an existing file. 
// The using statement automatically closes the stream and calls  
// IDisposable.Dispose on the stream object. 
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\Public\TestFolder\WriteLines.txt", true))
{
    file.WriteLine("Your line");
}

Кроме того, убедитесь, что у вас есть разрешение на запись в каталог / файл, в который вы пытаетесь писать, и что вы запускаете свое приложение как администратор.

person AR5HAM    schedule 31.01.2014