import java.io.*;
import java.net.*;
import java.util.*;

public class Cliente_Fichero{
    public static void main(String args[]){
        Scanner teclado=new Scanner(System.in);
        try{
            // Me conecto al servidor
           Socket socket=new Socket("127.0.0.1",5001);
           // Creo el flujo de entrada y de salida
           InputStream flujoEntrada=socket.getInputStream();
           DataInputStream dis=new DataInputStream(flujoEntrada); 
           OutputStream flujoSalida=socket.getOutputStream();
           DataOutputStream dos=new DataOutputStream(flujoSalida);
           // Recibo el listado de ficheros
           System.out.println("ESTOS FICHEROS ME OFRECEN");
           String nombreFichero=dis.readUTF();
           while(!nombreFichero.equals("FIN")){
               System.out.println(nombreFichero);
               nombreFichero=dis.readUTF();
           }
           // Leo desde el teclado el que quiero y lo mando al servidor
           System.out.print("Cargar: ");
           nombreFichero=teclado.nextLine();
           dos.writeUTF(nombreFichero);
           // Recibo el fichero en bloques de 1kb y lo escibo en mi disco
           FileOutputStream fichero=new FileOutputStream("copia_"+nombreFichero);
           byte[] trozo=new byte[1024];
           int leidos=dis.read(trozo);
           while(leidos>-1){
               if(leidos<1024) fichero.write(trozo,0,leidos);
               else fichero.write(trozo);
               fichero.flush();
               System.out.println("Recibido y escrito un trozo");
               leidos=dis.read(trozo);
           }
           // Cierro en orden
           fichero.close();
           dos.close();
           flujoSalida.close();
           dis.close();
           flujoEntrada.close();
           // Cierro la conexion hasta otra ocasion
           socket.close();
        }catch(Exception e){
        }
    }
}