Member 14756217 Ответов: 2

[Начинающий]удалите строку внутри текстового файла.


Привет,
Я пытаюсь удалить строку из текстового файла, просто что-то простое. У меня есть текстовый файл, в котором содержится информация о пользователе:
UID: X Firstname: XXXXX Lastname: XXXXX Date Added: XXXXX

Итак, то, что я пытаюсь сделать, - это позволить "администратору" ввести UID(идентификатор пользователя) и удалить строку только с этим. Я не знаю, возможно ли это, потому что это не работает для меня.
Мой код ниже не корректен, я знаю, но я не могу узнать, как это сделать.

Что я уже пробовал:

Console.Write ("Enter the userID: ");
userID = Console.ReadLine ();

int lineNumber = 0;
string line;

var sr = new StreamReader (combinePath);
while((line = sr.ReadLine()) != null){
    if (line.Contains (userID)){
        line.Remove (lineNumber , lineNumber++);
    }
    lineNumber++;
}

2 Ответов

Рейтинг:
9

OriginalGriff

Тестовые файлы не содержат "строк".

Да, да, я знаю - вы можете читать и писать строки, поэтому очевидно, что они содержат их. Но на практике это не так - они содержат поток символов, некоторые из которых интерпретируются как "новая строка" программным обеспечением, считывающим файл. Когда вы "читаете строку", программа считывает каждый символ, пока не доберется до следующего символа новой строки (в C# это можно увидеть как '\n'), и возвращает все символы, которые она прочитала, как одну строку - "строку". Когда вы пишете строку, ваш текст записывается в строку и к ней добавляется символ новой строки.

Это важно знать, потому что это означает, что вы не можете просто "удалить строку" или "вставить строку" в текстовый файл. Для этого вам нужно создать новый файл.
Чтобы удалить строку:

1) Copy all the text up to the start of the line from the old file to the new file.
2) Find the end of the line to delete without copying it.
3) Copy all the text up to the end of the file from the old file to the new file.
4) Close both files.
5) Delete the original file, and rename the new file to become the old one.


Чтобы вставить строку:
1) Copy all the text up to the start of the line before which you want to insert the new line from the old file to the new file.
2) Write your new text to the new file, with a newline character at the end.
3) Copy all the text up to the end of the file from the old file to the new file.
4) Close both files.
5) Delete the original file, and rename the new file to become the old one.


Maciej Los

5ed!

Рейтинг:
0

CPallini

Вы знаете, что это работает таким образом

  • Откройте исходный файл для чтения и прочитайте его строка за строкой.
  • Скопируйте только нужные строки в другой файл (выходной файл, открытый для записи)
  • В конце процесса удалите исходный файл и переименуйте выходной.


Maciej Los

5ed!

CPallini

Спасибо тебе, Мацей!