2011-04-26 9 views

Respuesta

6

No puede insertar datos en un archivo. Puede sobrescribir datos en una ubicación específica con RandomAccessFile. Sin embargo, una inserción requiere cambiar todos los datos después de ella. Para su caso intentar algo como esto en su lugar:

File file = new File("abhishek.txt"); 
Scanner scanner = new Scanner(file).useDelimiter("\n"); 
String line = scanner.next(); 
String newLine = line.substring(0, 5) + "Abhishek" + line.substring(5); 
FileWriter writer = new FileWriter(file); 
writer.write(newLine); 
writer.close(); 
3

En general, necesita leer el archivo anterior, modificar los contenidos en la memoria y volver a escribirlos.

Aquí hay muchas opciones, si usted lee el archivo de una vez, o una pieza pequeña a la vez, si reemplaza el archivo existente, etc., pero este es generalmente el patrón a usar.

8

No se puede insertar datos en un archivo ... sistemas de archivos (en general) simplemente no son compatibles con dicha operación. Normalmente abriría un archivo para leer y otro para escribir, copiaría la primera parte del archivo de una secuencia a la otra, escribiría la parte adicional y luego copiaría la segunda parte del archivo.

Si está tratando de reemplazar el archivo original, deberá eliminarlo y mover el nuevo archivo a su lugar.

A veces puede ser más simple leer todo el archivo en la memoria de una sola vez, depende de lo que intente hacer y de la extensión del archivo.

2

tiene tres opciones:

  1. cojín de la entrada original con espacio suficiente que RandomAccessFile se puede utilizar (y que no se preocupan poco de espacio al final sea muy fácil, pero limitada utilidad
  2. uso a. templating engine (StringTemplate, Velocity, etc.) si está haciendo esto mucho. Posiblemente sea demasiado trabajo si hace esto solo una vez.
  3. Escriba su propio motor de plantillas simple que lo lea en la memoria hace una regex replacement y lo escribe No es especialmente eficiente, pero si tiene un uso muy simple y limitado, tal vez el mejor compromiso mi.
2

he conseguido hacerlo utilizando RandomAccessFile:

enter image description here

Con esto, se obtiene un archivo que contiene exactamente el esperado 'Soy Abhishek contenido. Esto funciona incluso si tuviera contenido después de la primera línea, que desea mantener en el archivo (este fue mi problema inicial: tenía un archivo grande y tuve que insertar algo de contenido después de una determinada cadena) en lugar de escribir en el final del archivo, que es más fácil.

Cuestiones relacionadas