Невозможно сохранить все элементы списка в текстовый файл

Я пытаюсь сохранить все содержимое списка в текстовый файл, но не могу этого сделать. Ниже приведен код, который я пробовал

 // 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);
        } 

Можете ли вы уточнить, как ваш код «не работает»? Чего вы ожидали и что произошло на самом деле? Если вы получили исключение/ошибку, опубликуйте строку, в которой она произошла, и сведения об исключении/ошибке, которые можно сделать с помощью минимальный воспроизводимый пример. Пожалуйста, редактировать свой вопрос, чтобы добавить в него эти детали, иначе мы не сможем помочь.

gunr2171 08.04.2022 15:05

Отвечает ли это на ваш вопрос? Сохранение списков в txt файл

gunr2171 08.04.2022 15:06

Пробовали File.WriteAllText()?

Prasad Telkikar 08.04.2022 15:06

Если файл существует, ваш код только удаляет его, но не создает новый. Удалите оператор else.

McNets 08.04.2022 15:07

Почему бы и нет File.WriteAllLines(file, list2)? Он также воссоздаст этот файл, если он существует.

Tim Schmelter 08.04.2022 15:08

@ gunr2171, сэр, я не получаю никаких ошибок или исключений.

ankit goel 08.04.2022 15:11

@ gunr2171 gunr2171, я уже прошел по предоставленной вами ссылке, сэр, но я не могу понять, что такое «Lists.verbList» в этом коде.

ankit goel 08.04.2022 15:12

Если вы ищете файл savelist.txt - он будет в вашей папке bin\debug

duerzd696 08.04.2022 15:13

Судя по комментарию @McNets, у вас есть опечатка в операторе if/else. Но, пожалуйста, прочитайте остальную часть моего первого комментария: можете ли вы уточнить, почему ваш код «не работает»? Чего вы ожидали и что произошло на самом деле?

gunr2171 08.04.2022 15:14

@gunr2171 gunr2171, как предложил duerzd96, я нашел файл, но он пустой.

ankit goel 08.04.2022 15:17

потому что в вашем списке ничего нет. попробуйте добавить List<string> list2 = new List<string>() { "1", "2", "3" }; к вашему коду, чтобы временно заменить ваш список

duerzd696 08.04.2022 15:18

Когда вы проходите код с точками останова, он вообще запускает код для записи строк в текстовый файл (tw.WriteLine(s))? Сколько записей в list2? Существует ли файл, когда выполняется оператор if?

gunr2171 08.04.2022 15:20

@ gunr2171, я дважды проверил свой список. Он состоит из 95 элементов.

ankit goel 08.04.2022 15:25
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
13
38
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Не уверен, что является исключением, но я настоятельно рекомендую использовать это вместо этого:

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); }

ankit goel 08.04.2022 15:20

У вас разные пути в (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); }

ankit goel 08.04.2022 15:26

теперь выходит ошибка, что доступ запрещен

ankit goel 08.04.2022 15:27

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

duerzd696 08.04.2022 15:45

Вы можете получить эту ошибку, если файл открыт или путь является системным, например «Program Files».

Klo 08.04.2022 15:51

Проблема решена. С моим обновленным кодом, предложенным @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);
        }
    

Другие вопросы по теме