Подтвердить что ты не робот

Удалить определенную строку из текстового файла?

Мне нужно удалить точную строку из текстового файла, но я не могу в течение всей моей жизни тренироваться, как это сделать.

Приветствуются любые предложения или примеры?

Вопросы, относящиеся

Эффективный способ удаления строки из текстового файла (С#)

4b9b3361

Ответ 1

Если строка, которую вы хотите удалить, основана на содержимом строки:

string line = null;
string line_to_delete = "the line i want to delete";

using (StreamReader reader = new StreamReader("C:\\input")) {
    using (StreamWriter writer = new StreamWriter("C:\\output")) {
        while ((line = reader.ReadLine()) != null) {
            if (String.Compare(line, line_to_delete) == 0)
                continue;

            writer.WriteLine(line);
        }
    }
}

Или, если он основан на номере строки:

string line = null;
int line_number = 0;
int line_to_delete = 12;

using (StreamReader reader = new StreamReader("C:\\input")) {
    using (StreamWriter writer = new StreamWriter("C:\\output")) {
        while ((line = reader.ReadLine()) != null) {
            line_number++;

            if (line_number == line_to_delete)
                continue;

            writer.WriteLine(line);
        }
    }
}

Ответ 2

Лучший способ сделать это - открыть файл в текстовом режиме, прочитать каждую строку с помощью ReadLine(), а затем записать в новый файл с помощью WriteLine(), пропуская одну строку, которую вы хотите удалить.

Как я знаю, не существует общей функции удаления-строки из файла.

Ответ 3

Один из способов сделать это, если файл не очень большой, - загрузить все строки в массив:

string[] lines = File.ReadAllLines("filename.txt");
string[] newLines = RemoveUnnecessaryLine(lines);
File.WriteAllLines("filename.txt", newLines);

Ответ 4

На самом деле вы можете использовать С# generics для этого:

        var file = new List<string>(System.IO.File.ReadAllLines("C:\\path"));
        file.RemoveAt(12);
        File.WriteAllLines("C:\\path", file.ToArray());

Ответ 5

Код ракета-носителя не требуется. Надейтесь, что этот простой и короткий код будет help.

List linesList = File.ReadAllLines("myFile.txt").ToList();            
linesList.RemoveAt(0);
File.WriteAllLines("myFile.txt"), linesList.ToArray());

ИЛИ используйте this

public void DeleteLinesFromFile(string strLineToDelete)
    {
        string strFilePath = "Provide the path of the text file";
        string strSearchText = strLineToDelete;
        string strOldText;
        string n = "";
        StreamReader sr = File.OpenText(strFilePath);
        while ((strOldText = sr.ReadLine()) != null)
        {
            if (!strOldText.Contains(strSearchText))
            {
                n += strOldText + Environment.NewLine;
            }
        }
        sr.Close();
        File.WriteAllText(strFilePath, n);
    }

Ответ 6

  • Прочитайте и запомните каждую строку

  • Определите тот, который вы хотите избавиться из

  • Забудьте, что один

  • Напишите остальную часть в верхней части файл

Ответ 7

Вы работаете в операционной системе Unix?

Вы можете сделать это с помощью редактора потока sed. Прочтите справочную страницу для "sed"

Ответ 8

Что? Используйте файл open, найдите позицию, затем очистите строку, используя null.

Готч это? Простой, поток, без массива, который быстро ест память.

Эта работа на vb.. Пример search line culture = id, где культура - имя и id - значение, и мы хотим изменить его на культуру = en

  Fileopen(1,"text.ini")
  dim line as string
  dim currentpos as long
  while true
   line = lineinput(1)
   dim namevalue() as string=split(line,"=")
   if namevalue(0)="line name value that i want to edit" then
    currentpos=seek(1)
    fileclose()
    dim fs as filestream("test.ini",filemode.open)
    dim sw as streamwriter(fs)
    fs.seek(currentpos,seekorigin.begin)
    sw.write(null)
    sw.write(namevalue+"="+newvalue)
    sw.close()
    fs.close()
    exit while
  end if
  msgbox("org ternate jua bisa, no line found")
 end while

что все..use #d

Ответ 9

Это можно сделать в три этапа:

// 1. Read the content of the file
string[] readText = File.ReadAllLines(path);

// 2. Empty the file
File.WriteAllText(path, String.Empty);

// 3. Fill up again, but without the deleted line
using (StreamWriter writer = new StreamWriter(path))
{
    foreach (string s in readText)
    {
        if (!s.Equals(lineToBeRemoved))
        {
            writer.WriteLine(s);
        }
    }
}