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();
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