Я пытаюсь сохранить все содержимое списка в текстовый файл, но не могу этого сделать. Ниже приведен код, который я пробовал
// here is my list type
List<string> list2 = new List<string>();
//code below for saving the contents of the list into text file
string file = @"C:\Users\textWriter.txt";
// check if the file exists
try
{
if (File.Exists(file))
{
File.Delete(file);
}
else
{
using (TextWriter tw = File.CreateText(@"SavedList.txt"))
{
foreach (String s in list2)
tw.WriteLine(s);
}
}
}
catch (Exception Op)
{
MessageBox.Show(Op.Message);
}
Отвечает ли это на ваш вопрос? Сохранение списков в txt файл
Пробовали File.WriteAllText()
?
Если файл существует, ваш код только удаляет его, но не создает новый. Удалите оператор else.
Почему бы и нет File.WriteAllLines(file, list2)
? Он также воссоздаст этот файл, если он существует.
@ gunr2171, сэр, я не получаю никаких ошибок или исключений.
@ gunr2171 gunr2171, я уже прошел по предоставленной вами ссылке, сэр, но я не могу понять, что такое «Lists.verbList» в этом коде.
Если вы ищете файл savelist.txt - он будет в вашей папке bin\debug
Судя по комментарию @McNets, у вас есть опечатка в операторе if/else. Но, пожалуйста, прочитайте остальную часть моего первого комментария: можете ли вы уточнить, почему ваш код «не работает»? Чего вы ожидали и что произошло на самом деле?
@gunr2171 gunr2171, как предложил duerzd96, я нашел файл, но он пустой.
потому что в вашем списке ничего нет. попробуйте добавить List<string> list2 = new List<string>() { "1", "2", "3" }; к вашему коду, чтобы временно заменить ваш список
Когда вы проходите код с точками останова, он вообще запускает код для записи строк в текстовый файл (tw.WriteLine(s)
)? Сколько записей в list2
? Существует ли файл, когда выполняется оператор if?
@ gunr2171, я дважды проверил свой список. Он состоит из 95 элементов.
Не уверен, что является исключением, но я настоятельно рекомендую использовать это вместо этого:
File.WriteAllLines(file, list2);
Если целевой файл уже существует, он перезаписывается.
Документация: File.WriteAllLines
В вашем коде вы используете разные пути, может быть, поэтому
Теперь я получаю сообщение об ошибке, что доступ к пути запрещен, но я являюсь администратором. строковый файл = @"C:\Users\textWriter.txt"; // проверяем, существует ли файл try { if (File.Exists(file)) { File.Delete(file); } else { File.WriteAllLines(file, list2); } } catch (Исключение Op) { MessageBox.Show(Op.Message); }
У вас разные пути в (File.Exists(файл) и File.CreateText(@"Saved List.txt"). Далее, вы добавили элементы в список?
строковый файл = @"C:\Users\textWriter.txt"; // проверяем, существует ли файл try { if (File.Exists(file)) { File.Delete(file); } else { File.WriteAllLines(file, list2); } } catch (Исключение Op) { MessageBox.Show(Op.Message); }
теперь выходит ошибка, что доступ запрещен
Я попробовал операционный код, и он сработал для меня - может быть, лучшие способы сделать это, но реальная проблема операционки заключалась в том, что в списке ничего не было.
Вы можете получить эту ошибку, если файл открыт или путь является системным, например «Program Files».
Проблема решена. С моим обновленным кодом, предложенным @Tim Schmelter и из справки по этой ссылке С# доступ к пути запрещен... (System.UnauthorizedAccessException: доступ к пути "C:\" запрещен.), теперь я могу видеть файл со всем написанным в нем содержимым.
string file = @"D:\textWriter.txt";
// check if the file exists
try
{
if (File.Exists(file))
{
File.Delete(file);
}
else
{
File.WriteAllLines(file, list2);
}
}
catch (Exception Op)
{
MessageBox.Show(Op.Message);
}
Можете ли вы уточнить, как ваш код «не работает»? Чего вы ожидали и что произошло на самом деле? Если вы получили исключение/ошибку, опубликуйте строку, в которой она произошла, и сведения об исключении/ошибке, которые можно сделать с помощью минимальный воспроизводимый пример. Пожалуйста, редактировать свой вопрос, чтобы добавить в него эти детали, иначе мы не сможем помочь.