Удалить определенную строку из текстового файла?
Мне нужно удалить точную строку из текстового файла, но я не могу в течение всей моей жизни тренироваться, как это сделать.
Приветствуются любые предложения или примеры?
Вопросы, относящиеся
Эффективный способ удаления строки из текстового файла (С#)
Ответы
Ответ 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);
}
}
}