Pregunta

Estoy trabajando en una utilidad.

Quiero añadir datos en la parte superior del archivo, pero es overwritting no anexar.

Para por ejemplo: Consideremos el archivo.txt:

  

Algo existente aquí

Ahora quiero añadir "Algo más aquí existente" antes de la línea actual. ¿Hay alguna manera de hacerlo sin utilizar 2 FileStreams?

¿Fue útil?

Solución

No. Los sistemas de archivos, básicamente, no son compatibles con la inserción de datos en el archivo - que se agregue al final del archivo, o sobrescribir los datos existentes. Al menos, yo no conozco ningún sistema de archivos que ¿Tiene apoyar esto, y las API estándar no.

Para cambiar un archivo de cualquier otra manera, la mejor manera es escribir un nuevo archivo, la lectura del archivo antiguo donde se necesita (en su caso después de escribir el texto anterior). A continuación, elimine el archivo antiguo y cambiar el nombre del archivo nuevo para tener el mismo nombre que el archivo de edad.

(Una versión más segura de esto implica cambiar el nombre del archivo antiguo, a continuación, cambiar el nombre del nuevo archivo, a continuación, eliminar el archivo antiguo -. Esto permite la recuperación si algo va mal)

Otros consejos

No. Los archivos no tienen una inserción en modo de la misma manera lo hacen los procesadores de textos.

En este momento, no es lo que quieren oír, pero es un hecho.

FileStream fs = new FileStream (ruta2, FileMode.OpenOrCreate, FileAccess.ReadWrite);

sw = new StreamWriter (fs);

sw.BaseStream.Seek (0, 0);

sw.WriteLine ( "escribir nuevo texto");

sw.close ()

Este método se sobreponen a los datos, insertar similar existente y reemplazarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top