C # Использование списков для чтения, записи и поиска строк текстового файла - PullRequest
5 голосов
/ 19 декабря 2010

Мне нужно выполнить следующие операции с текстовым файлом и списком:

  1. Считать все строки текстового файла (без разделителей) в список на основе строк
  2. Пока приложение открыто, мне нужно сделать следующее:
    • Проверка на наличие экземпляров строки в списке
    • Добавить новые записи в список
    • Удалить все идентичные экземпляры определенной строки из списка
  3. Запишите содержимое списка обратно в текстовый файл, включая любые изменения, внесенные сразу после их внесения

Во-первых, как мне читать и писать между списками и текстовыми файлами? Во-вторых, как мне искать в списке строку? И наконец, как мне безопасно удалить элемент из списка, не оставляя пробелов в текстовом файле, который я пишу?

Ответы [ 3 ]

8 голосов
/ 19 декабря 2010

public void homework()
{
    string filePath = @"E:\test.txt";
    string stringToAdd = "test_new";

    IList readLines = new List();

    // Read the file line-wise into List
    using(var streamReader = new StreamReader(filePath, Encoding.Default))
    {
        while(!streamReader.EndOfStream)
        {
            readLines.Add(streamReader.ReadLine());
        }
    }

    // If list contains stringToAdd then remove all its instances from the list; otherwise add stringToAdd to the list
    if (readLines.Contains(stringToAdd))
    {
        readLines.Remove(stringToAdd);
    }
    else
    {
        readLines.Add(stringToAdd);
    }

    // Write the modified list to the file
    using (var streamWriter = new StreamWriter(filePath, false, Encoding.Default))
    {
       foreach(string line in readLines)
       {
           streamWriter.WriteLine(line);
       }
    }
}

Попробуйте гуглить, прежде чем задавать вопрос.

7 голосов
/ 19 декабря 2010

Я бы начал здесь:

Чтение из текстового файла: http://dotnetperls.com/readline

Список действий
1. Удаление из списка
2. Поиск в списке

Запись в текстовый файл: http://www.csharp -station.com / HowTo / ReadWriteTextFile.aspx

1 голос
/ 23 марта 2016

Я просто поделюсь своей идеей ...

using System.IO;

public void newMethod()
{
    //get path of the textfile
    string textToEdit = @"D:\textfile.txt";

    //read all lines of text
    List<string> allLines = File.ReadAllLines(textToEdit).ToList();

    //from Devendra's answer
    if (allLines.Contains(stringToAdd))
    {
        allLines.Remove(stringToAdd);
    }
    else
    {
        allLines.Add(stringToAdd);
    }

    //extra: get index and edit
    int i = allLines.FindIndex(stringToEdit => stringToEdit.Contains("need to edit")) ;
    allLines[i] = "edit";

    //save all lines
    File.WriteAllLines(textToEdit, allLines.ToArray());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...