write java file text append java-io

write - java 8 append to file



Java. Cómo agregar texto a la parte superior de file.txt (3)

El siguiente código funcionó para mí. Una vez más, obviamente reemplazará los bytes al principio del archivo. Si puede saber cuántos bytes de reemplazo se harán por adelantado, entonces puede usar esto. De lo contrario, siga las respuestas anteriores o eche un vistazo aquí Escribiendo al principio de un archivo de texto Java

String str = "Jennifer"; byte data[] = str.getBytes(); try { RandomAccessFile f = new RandomAccessFile(new File("src/lt/test.txt"), "rw"); f.getChannel().position(0); f.write(data); f.close(); } catch (IOException e) { e.printStackTrace(); }

Esta pregunta ya tiene una respuesta aquí:

Necesito agregar texto al principio del archivo de texto a través de Java.

Por ejemplo tengo un archivo test.txt con datos:

Peter John Alice

Necesito agregar (al inicio del archivo):

Jennifer

Debería ser:

Jennifer Peter John Alice

Tengo parte del código, pero al agregar datos al final del archivo, necesito hacer que agregue texto al principio del archivo:

public static void irasymas(String irasymai){ try { File file = new File("src/lt/test.txt"); if (!file.exists()) { file.createNewFile(); } FileWriter fw = new FileWriter(file.getAbsoluteFile(), true); BufferedWriter bw = new BufferedWriter(fw); bw.write(irasymai+ "/r/n"); bw.close(); } catch (IOException e) { e.printStackTrace(); } }

He intentado esto, pero esto solo elimina todos los datos del archivo y no inserta ningún texto:

public static void main(String[] args) throws IOException { BufferedReader reader = null; BufferedWriter writer = null; ArrayList list = new ArrayList(); try { reader = new BufferedReader(new FileReader("src/lt/test.txt")); String tmp; while ((tmp = reader.readLine()) != null) list.add(tmp); OUtil.closeReader(reader); list.add(0, "Start Text"); list.add("End Text"); writer = new BufferedWriter(new FileWriter("src/lt/test.txt")); for (int i = 0; i < list.size(); i++) writer.write(list.get(i) + "/r/n"); } catch (Exception e) { e.printStackTrace(); } finally { OUtil.closeReader(reader); OUtil.closeWriter(writer); } }

Gracias por ayudar.


Puede usar RandomAccessFile para y buscar el cursor hasta la posición 0th utilizando el método de seek(long position) , antes de comenzar a escribir.

Como se explica en this hilo.

RandomAccessFile f = new RandomAccessFile(new File("yourFile.txt"), "rw"); f.seek(0); // to the beginning f.write("Jennifer".getBytes()); f.close();

Edición: Como se señala a continuación por muchos comentarios, esta solución sobrescribe el contenido del archivo desde el principio. Para reemplazar completamente el contenido, es posible que el archivo deba eliminarse y reescribirse .


File mFile = new File("src/lt/test.txt"); FileInputStream fis = new FileInputStream(mFile); BufferedReader br = new BufferedReader(fis); String result = ""; String line = ""; while( (line = br.readLine()) != null){ result = result + line; } result = "Jennifer" + result; mFile.delete(); FileOutputStream fos = new FileOutputStream(mFile); fos.write(result.getBytes()); fos.flush();

La idea es leerlo todo, agregar la cadena en el frente. Eliminar archivo antiguo. Crea el nuevo archivo con String eited.