StreamWriter.Write не записывается в файл; никакое исключение не было брошено

Мой код в С# (asp.net MVC)

StreamWriter tw = new StreamWriter("C:\\mycode\\myapp\\logs\\log.txt");

// write a line of text to the file
tw.Write("test");

Файл создается, но пуст. Никакое исключение не выбрасывается. Я никогда не видел этого раньше, и я застрял здесь; Мне просто нужно написать какой-то отладочный вывод.

Просьба сообщить.

Ответы

Ответ 1

Используйте

System.IO.File.WriteAllText(@"path\te.txt", "text");

Ответ 2

StreamWriter буферизуется по умолчанию, то есть он не будет выводиться до тех пор, пока он не получит вызов Flush() или Close().

Вы можете изменить это, установив свойство AutoFlush, если хотите. В противном случае просто выполните:

StreamWriter tw = new StreamWriter("C:\\mycode\\myapp\\logs\\log.txt");

// write a line of text to the file
tw.Write("test");
tw.Close();  //or tw.Flush();

Ответ 3

Ни краснеет, ни закрыт, ни расположен. попробуйте это

using (StreamWriter tw = new StreamWriter(@"C:\mycode\myapp\logs\log.txt"))
{
    // write a line of text to the file
    tw.Write("test");
    tw.Flush();
}

или мои предпочтения

using (FileStream fs = new FileStream( @"C:\mycode\myapp\logs\log.txt"
                                     , FileMode.OpenOrCreate
                                     , FileAccess.ReadWrite)           )
{
    StreamWriter tw = new StreamWriter(fs);
    tw.Write("test");
    tw.Flush();
}

Ответ 4

        FileStream fs = new FileStream("d:\\demo.txt", FileMode.CreateNew,                FileAccess.Write);
        StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.ASCII);
        int data;

            sw.Write("HelloWorld");

        sw.Close();
        fs.Close();
  • Проблема заключается в том, что при создании объекта StreamWriter со ссылкой на объект FileStream объект SW всегда будет ожидать некоторые данные до закрытия объекта SW.
  • Итак, после использования sw.Close(); Ваш открытый файл закрывается и готов к показу Output.

Ответ 5

Ya в VB.net это не было необходимо, но, похоже, CSharp вам нужен вызов Writer.Flush, чтобы заставить писать. Конечно, Writer.Close() также заставил бы флеш.

Мы также можем установить свойство AutoFlush экземпляра StreamWriter:

sw.AutoFlush = true;
// Gets or sets a value indicating whether the StreamWriter 
// will flush its buffer to the underlying stream after every  
// call to StreamWriter.Write.

От: http://msdn.microsoft.com/en-us/library/system.io.streamwriter.autoflush(v=vs.110).aspx

Ответ 6

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

tw.Close();

или

tw.Flush();

Но лучше всего заключить выходной код в оператор using, поскольку StreamWriter реализует IDisposable:

using (StreamWriter tw = new StreamWriter("C:\\mycode\\myapp\\logs\\log.txt")){
// write a line of text to the file
tw.Write("test");
}

Ответ 7

альтернативный

FileStream mystream = new FileStream("C:\\mycode\\myapp\\logs\\log.txt",    
FileMode.OpenOrCreate, FileAccess.Write);           
StreamWriter tw = new StreamWriter(mystream); 
tw.WriteLine("test");
tw.close();

Ответ 8

Попробуйте закрыть файл или добавить \n в строку, например

tw.WriteLine("test");
tw.Close();