Eliminar línea específica de un archivo de texto?

Necesito eliminar una línea exacta de un archivo de texto, pero no puedo durante toda la sesión de entrenamiento cómo hacerlo.

¿Alguna sugerencia o ejemplo sería muy apreciado?

preguntas relacionadas

Manera eficiente de eliminar una línea de un archivo de texto (C #)

Si la línea que desea eliminar se basa en el contenido de la línea:

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); } } } 

O si está basado en el número de línea:

 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); } } } 

La mejor forma de hacerlo es abrir el archivo en modo texto, leer cada línea con ReadLine () y luego escribirla en un nuevo archivo con WriteLine () omitiendo la línea que desea eliminar.

No hay una función genérica de eliminar una línea desde un archivo, hasta donde yo sé.

Una forma de hacerlo si el archivo no es muy grande es cargar todas las líneas en una matriz:

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

En realidad, puedes usar generics C # para que sea realmente fácil:

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

No es necesario ningún código de cohete. Espere este código simple y corto que ayudará .

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

O usa esto

 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); } 
  1. Lee y recuerda cada línea

  2. Identifica el que quieres eliminar

  3. Olvídate de ese

  4. Escribe el rest sobre la parte superior del archivo

¿Estás en un sistema operativo Unix?

Puede hacer esto con el editor de flujo “sed”. Lea la página de manual de “sed”

¿Qué? Utilice el archivo abierto, busque la posición y luego elimine la línea de borrado usando null.

Gotch? Simple, stream, no array que consum memoria, rápido.

Este trabajo en vb … Ejemplo de línea de búsqueda culture = id donde cultura son namevalue y id son valores y queremos cambiarlo a culture = 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 

eso es todo … usar #d

Esto se puede hacer en tres pasos:

 // 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); } } }