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

Зависит от того, о чем Вы заботитесь. Если Вы подразумеваете, что СТЕННОЕ ВРЕМЯ (как в, время на часах на Вашей стене), time.clock () не обеспечивают точности, потому что это может управлять процессорным временем.

25
задан Community 23 May 2017 в 11:54
поделиться

7 ответов

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

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);
        }
    }
}
40
ответ дан 28 November 2019 в 18:17
поделиться

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

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

0
ответ дан 28 November 2019 в 18:17
поделиться

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

Насколько мне известно, не существует универсальной функции удаления строки из файла.

13
ответ дан 28 November 2019 в 18:17
поделиться

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

string[] lines = File.ReadAllLines("filename.txt");
string[] newLines = RemoveUnnecessaryLine(lines);
File.WriteAllLines("filename.txt", newLines);
7
ответ дан 28 November 2019 в 18:17
поделиться

Вы можете использовать для этого универсальные шаблоны C #, чтобы упростить задачу:

        var file = new List<string>(System.IO.File.ReadAllLines("C:\\path"));
        file.RemoveAt(12);
        File.WriteAllLines("C:\\path", file.ToArray());
2
ответ дан 28 November 2019 в 18:17
поделиться
  1. Прочтите и запомните каждую строчку

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

  3. Забудьте об этом

  4. Напишите остальное поверх файл

1
ответ дан 28 November 2019 в 18:17
поделиться

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

Понял? Просто, поток, без массивов, которые съедают память, быстро.

Эта работа на vb .. Пример строки поиска culture = 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

вот и все .. использовать #d

0
ответ дан 28 November 2019 в 18:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: