El siguiente método solo escribe el último elemento que he agregado, no se agrega a las entradas anteriores. ¿Qué estoy haciendo mal?PrintWriter método agregar no se agrega
public void addNew() {
try {
PrintWriter pw = new PrintWriter(new File("persons.txt"));
int id = Integer.parseInt(jTextField.getText());
String name = jTextField1.getText();
String surname = jTextField2.getText();
Person p = new Person(id,name,surname);
pw.append(p.toString());
pw.append("sdf");
pw.close();
} catch (FileNotFoundException e) {...}
}
Esto es como despertar el hilo de dormir, así que lo siento por eso. Pero tengo una duda. ¿Cómo podría anexar la operación en el archivo si solo tengo un objeto File y no puedo usar las clases Stream (por ejemplo, FileOutputStream, etc.)? Lo que me permite es: Printwriter pw = new PrintWriter (archivo); : Intenté agregar(), escribir(), imprimir(). ¿Hay algún método listo para agregar en este escenario? –
Como aclaración, el método 'append()' de PrintWriter se refiere al hecho de que se agrega al escritor, es decir, a sí mismo.e es propio outputtream, y no al archivo. –
Y con referencia a la pregunta de @ user1707035, no, parece que no se puede usar un PrintWriter para anexar sin construirlo con un objeto OutputStream. Esto se debe a que PrintWriter abre la secuencia en el momento de su creación de instancias y los únicos constructores que admiten File o filename como argumento abren el archivo al construir internamente un objeto OutputStream sin el parámetro 'append'. Referencia (documentos): https://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html#PrintWriter(java.io.File) –