Copiar ficheros en java

Estoy realizando una practica en java donde dos clientes se encuentran conectados a un servidor y mantienen una conversación de chat en la cual existe una opción para enviar ficheros de texto y me ha surgido un problema que no sé como solucionar pues cada
vez que me llegan los mensajes al cliente receptor del fichero (después de haber pasado dichos mensajes por el servidor), lógicamente van llegando de uno en uno y el problema es que para almacenarlos en el fichero recibido me sobrescribe encima ya que cada vez
que llega un mensaje tengo que abrir el fichero y cerrarlo, entonces la solución podría ser avanzar el puntero en el fichero sin escribir en dicho fichero, pero no se si existe alguna forma de hacer eso.
No obstante adjunto el código para que sea más fácil y lo que hago aquí es que cada vez que llega un mensaje para almacenar abro el fichero y voy comparando hasta llegar al final del fichero para que los mensajes sigan su orden de llegada y cuando llego al final escribo en el fichero y lo cierro. Pero como digo esto lo que hace es que me sobrescribe encima y al final solo obtengo almacenada la ultima linea del fichero.
Espero tu respues. Muchas gracias y un saludo.
Adjunto la parte del código
FileInputStream FicheroRecibido;
DataInputStream dataFicheroRecibido;
//la ESCRITURA se define en la clase OutputStream
FileOutputStream FicheroEnviado;
DataOutputStream dataFicheroEnviado;
String lineaRecibida=" ";
FicheroRecibido=new FileInputStream(NomFichero);
dataFicheroRecibido=new DataInputStream(FicheroRecibido);//leer
FicheroEnviado=new FileOutputStream(NomFichero);
dataFicheroEnviado=new DataOutputStream(FicheroEnviado);
lineaRecibida=dataFicheroRecibido.readLine(); //leemos una linea
while(lineaRecibida!=null)//hasta que no llegue al final del fichero
{
lineaRecibida=dataFicheroRecibido.readLine(); //leemos la siguiente linea
}
if(lineaRecibida==null)//si es final de fichero comenzamos a escribir ahora
{
dataFicheroEnviado.writeBytes(mensaje.getField((byte)1)+"\n");
Cliente.setTextChat(mensaje.getField((byte)1)+"\n");
}
FicheroRecibido.close();
FicheroEnviado.close();

1 Respuesta

Respuesta
1
Puedes usar para escribir la clase RandomAccessFile, ella tiene el método seek(long pues),
Con este método puedes ubicar el puntero en la ultima posición de la siguiente forma:
RandomAccessFile file=new RandomAccessFile(NomFichero);
file.seek(file.length());
puedes ver la referencia en esta ruta:
http://java.sun.com/j2se/1.4.2/docs/api/java/io/RandomAccessFile.html
http://www.cica.es/formacion/JavaTut/Cap8/fich_al.html
Muchas gracias pero aun asi no lo tengo muy claro porque aún incluyendo en el eclipse
import java.io.RandomAccessFile;
Y después utilizando esto
RandomAccessFile FicheroEnviado=new RandomAccessFile(null, "chiste.cfg");
FicheroEnviado.seek(FicheroEnviado.length());
¿NO ME QUEDA CLARO COMO DEFINIRME LA CLASE RandomAccessFile
ME PODRÍAS PONER UN EJEMPLO?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas