C # StreamWriter не пишет в файл - PullRequest
2 голосов
/ 19 марта 2012

basicLog - это список имен и временных меток. Я хочу записать их в файл. Я получаю две ошибки: ';' в строке StreamWriter и в «файле». на второй строке.

';' ошибка: возможно ошибочное пустое утверждение Ошибка в файле: имя «файл» не существует в текущем контексте.

Файл создается просто отлично, но в него ничего не записывается. Я запутался из-за того, что файл не существует в текущем контексте, потому что на предыдущей строке он создан. Спасибо за любую помощь.

foreach (BasicLog basicLog in emailAttach)
{
    using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\sorted.txt", true));
    file.WriteLine(basicLog.LastName + " - " + basicLog.InOrOut + " - " + basicLog.EventTime + "\n");
}

Ответы [ 4 ]

5 голосов
/ 19 марта 2012

Да, у вас есть ошибочное пустое утверждение.

удалить ';'и отступ, чтобы показать, почему:

foreach (BasicLog basicLog in emailAttach)
{
   using (System.IO.StreamWriter file = 
            new System.IO.StreamWriter(@"C:\\sorted.txt", true))  //;
   {
      file.WriteLine(basicLog.LastName + " - " + basicLog.InOrOut + " - "
             + basicLog.EventTime + "\n");
   }
}

Оператор WriteLine () находится (должен быть) под контролем using ().{} прояснить это.

Это будет работать, но учтите, что это очень неэффективно, вы открываете файл (для добавления) несколько раз.

Так что лучше инвертировать foreach / используя:

using (System.IO.StreamWriter file = 
      new System.IO.StreamWriter(@"C:\\sorted.txt", true)) 
{
   foreach (BasicLog basicLog in emailAttach)
   {
        file.WriteLine(basicLog.LastName + " - " + basicLog.InOrOut + " - " 
            + basicLog.EventTime + "\n");
   }
}
4 голосов
/ 19 марта 2012

Упс есть точка с запятой в конце используемой строки ???

Возможно, ваше намерение было:

using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\sorted.txt", true))
{
    foreach (BasicLog basicLog in emailAttach) 
    {          
        file.WriteLine(basicLog.LastName + " - " + basicLog.InOrOut + " - " + basicLog.EventTime + "\n"); 
    } 
}

Любопытно, то же самое произошло со мной сегодня утром: -)

2 голосов
/ 19 марта 2012

Вы удаляете StreamWriter перед записью в файл.Фактор к этому:

using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\sorted.txt", true))   
{
   foreach (BasicLog basicLog in emailAttach)
   {     
      file.WriteLine(basicLog.LastName + " - " + basicLog.InOrOut + " - " + basicLog.EventTime + "\n");
   }
}
2 голосов
/ 19 марта 2012

Ваш экземпляр file будет удален сразу после этой строки (поскольку вы используете using):

using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\sorted.txt", true));

Измените его на

System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\sorted.txt", true);

Или полностьюкод,

System.IO.StreamWriter file;
foreach (BasicLog basicLog in emailAttach)
{
    file = new System.IO.StreamWriter(@"C:\\sorted.txt", true);
    file.WriteLine(basicLog.LastName + " - " + basicLog.InOrOut + " - " + basicLog.EventTime + "\n");
}

или правильно использовать using

foreach (BasicLog basicLog in emailAttach)
{
    using(System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\sorted.txt", true))
    {
        file.WriteLine(basicLog.LastName + " - " + basicLog.InOrOut + " - " + basicLog.EventTime + "\n");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...