Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - supersergio88

#1
Java / Re: TRANSFERENCIA DE ARCHIVOS
27 Mayo 2011, 10:44 AM
Hola, como pasais el path me lo puedes indicar paso a paso?
#2
Java / Ayudaaaaaa
27 Mayo 2011, 09:57 AM
Hola, estoy haciendo una aplicacion en java de intercambio de ficheros y con un menu, con varias clases.Pero me salta un error : (Is a directory)
  at java.io.FileOutputStream.open(Native Method)
  at java.io.FileOutputStream.<init>(FileOutputStream.java:209)
  at java.io.FileOutputStream.<init>(FileOutputStream.java:99)

no entiendo porque les dejo aqui mi codigo a ver si me pueden ayudar please

clase Cliente:
Código (java) [Seleccionar]

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;


public class Cliente {
  private static Socket socket;
  public static void main(String[] args) throws IOException, ClassNotFoundException {
       if(args.length != 2){
           System.out.println("Debe especificar el host y el puerto del servidor");
           System.exit(-1);
       }
       String hostServidor = args[0];
       int puertoServidor = Integer.parseInt(args[1]);
             
       try{
           socket = new Socket(hostServidor, puertoServidor);
           System.out.println("El cliente se ha conectado con exito al servidor " + hostServidor + ":" + puertoServidor);
       }catch(IOException e){
           e.printStackTrace();
       }
     
  }
     
  //el inputstreamreader coge un chorro de bytes y lo transforma a characteres
         InputStreamReader isr = new InputStreamReader(System.in);
  //el bufferedReder pasa de los characteres a lineas,tiene metodos readline() que lee lineas por ejemplo
          BufferedReader in = new BufferedReader(isr);
  // lo mismo es que si hiciera: BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
                 
    public void menuPrincipal(Socket sock) throws IOException, ClassNotFoundException{
             boolean repetir;
               char op = 0;
                repetir=true;
               while(repetir){
  //si quisiera (pero es ilogico ya que el metodo que voy a llamar esta en la misma clase),
  //me podria crear un objeto MenuPersona menuPersona = new MenuPersona(); fuera del metodo
  //para que no me lo pise, y luego llamarlo en lugar de Menu(); llamar a MenuPersona.Menu()
                    Menup();
                   op = in.readLine().charAt(0);
                   switch(op){
        case '1' :
              System.out.println("--Monstramos lista el directorio local del cliente--");
             
                       repetir=true;
                    break;
                   
        case '2':
                System.out.println("--Monstramos lista el directorio remoto del servidor--");
                      VerFicheros vf = new VerFicheros();
                      vf.VerFichero();
                     repetir=true;
                   break;
                 
        case '3':
             System.out.println("--envíamos un fichero especificado(del directorio local al remoto)--");
                EnviarFichero ef = new EnviarFichero();
                ef.EscribirFichero(sock);
                ef.EnvioFicherosAServidor(socket);
               
               
               repetir=true;
             break;
           
        case '4':
             System.out.println("--recibe un fichero especificado(del riectorio remoto al local)--");

               repetir=true;
             break;
       


         
        case '5':
              System.out.println("salir cerrando la conexión con el servidor y terminando el proceso cliente");
                 repetir = false;
              System.out.println("Adios");
            return;
                   }
          }
         
             }

   
private static void Menup() {
  System.out.println("||================================== MENU PRINCIPAL ==================================||");
  System.out.println("|| ---------------------- ¡¡¡¡Hola!!! Elige una opcion por favor ---------------------||");
  System.out.println("|| ----------------------                                       --------------------- ||");
  System.out.println("||  1.- 'lc': lista el directorio local del cliente                                   ||");
  System.out.println("||  2.- 'lr': lista el directorio remoto del servidor                                 ||");
  System.out.println("||  3.-'s': envía un fichero especificado(del directorio local al remoto)             ||");
  System.out.println("||  4.-'r': recibe un fichero especificado(del riectorio remoto al local)             ||" );
  System.out.println("||  5.-'q': salir cerrando la conexión con el servidor y terminando el proceso cliente||");
  System.out.println("||====================================================================================||");
  System.out.println("||====================================================================================||");  
        }

}


Clase Servidor:

Código (java) [Seleccionar]

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Servidor{
private final static int puerto = 0;


public  static void main(String[] args){
   try{
       ServerSocket serverSocket = new ServerSocket(puerto);
       System.out.println("El Servidor se ata al puerto " + serverSocket.getLocalPort());
       while(true){
           Socket conn = serverSocket.accept();
           Procesador p = new Procesador(conn);
           p.start();
       }

   } catch(IOException e){
       e.printStackTrace();
   }
}

}


Clase Procesador(para los hilos):

Código (java) [Seleccionar]

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.ArrayList;

public class Procesador extends Thread{

   private static Socket conn;
 
   public Procesador(Socket conn){
       this.conn = conn;
   }

   public synchronized void run(){
          System.out.println("La direccion IP del cliente es: " + conn.getLocalAddress() + " y su puerto es " + conn.getPort());

           Cliente cliente = new Cliente();
           try {
              cliente.menuPrincipal(conn);
           } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
           } catch (ClassNotFoundException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
           }

}
}



Clase VerFicheros(para ver listado de ficheros):


Código (java) [Seleccionar]

import java.io.File;

public class VerFicheros {

  //
  public void VerFichero() {

/**Lo primero que haremos será obtener una referencia al directorio que queremos listar.
*Utilizaremos, en este caso, la clase File para almacenar la referencia.*/
     File dir = new File("c:\\");
     
/**Uno de los métodos de la clase File es .list().
* Mediante este método recuperaremos los ficheros que componen el directorio especificado.
*  Lo que nos devuelve es un array de cadenas.*/        
     String[] ficheros = dir.list();
       
       
     if (ficheros == null)
        System.out.println("No hay ficheros en el directorio especificado");
     else {
        for (int x=0;x<ficheros.length;x++){
           System.out.println(ficheros);

        }
     }

  }

}


Clase EnviarFicheros(la uso para enviar):

Código (java) [Seleccionar]

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;


public class EnviarFichero {
  public void EnvioFicherosAServidor(Socket sock){

      try{
         Scanner s=new Scanner(System.in);
         System.out.println("Ingrese el path del archivo a enviar: " );
         String path=s.nextLine();
      PrintStream envio=new PrintStream(sock.getOutputStream());
      //String path = "C:\\hola.txt";
      System.out.println(path);
      FileInputStream origen=new FileInputStream(path);
      byte[] buffer = new byte[1024];
      int len;
      while((len=origen.read(buffer))>0){
      envio.write(buffer,0,len);
      }
      }catch(IOException e){
      e.printStackTrace();
      }
     
}
 
  public void EscribirFichero(Socket socket) throws IOException{
     try{
        Scanner s=new Scanner(System.in);
        System.out.println("Ingrese el path donde desea escribir el archivo: " );
        String path=s.nextLine();
        InputStream llegada = socket.getInputStream();
        //String path = "C:\\Java";
         System.out.println(path);
        FileOutputStream destino=new FileOutputStream(path);
        byte[] buffer = new byte[1024];
        int len;
        while((len=llegada.read(buffer))>0){
        destino.write(buffer,0,len);
        }
        }catch(IOException e){
           e.printStackTrace();
           }
  }
  }



Pongo entre \\ como pongo yo el path si esta mal como lo pongo corregirme porfavor, les agradezco que testen mi codigo y si le salta algun error de que meten mal el directorio al darle a la opcion de enviar, la opcion 3
#3
Java / Ayuda Programa Java
27 Mayo 2011, 09:56 AM
Hola, estoy haciendo una aplicacion en java de intercambio de ficheros y con un menu, con varias clases.Pero me salta un error : (Is a directory)
Código (cpp) [Seleccionar]
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:209)
at java.io.FileOutputStream.<init>(FileOutputStream.java:99)
no entiendo porque les dejo aqui mi codigo a ver si me pueden ayudar please

clase Cliente:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;


public class Cliente {
private static Socket socket;
public static void main(String[] args) throws IOException, ClassNotFoundException {
if(args.length != 2){
System.out.println("Debe especificar el host y el puerto del servidor");
System.exit(-1);
}
String hostServidor = args[0];
int puertoServidor = Integer.parseInt(args[1]);

try{
socket = new Socket(hostServidor, puertoServidor);
System.out.println("El cliente se ha conectado con exito al servidor " + hostServidor + ":" + puertoServidor);
}catch(IOException e){
e.printStackTrace();
}

}

//el inputstreamreader coge un chorro de bytes y lo transforma a characteres
InputStreamReader isr = new InputStreamReader(System.in);
//el bufferedReder pasa de los characteres a lineas,tiene metodos readline() que lee lineas por ejemplo
BufferedReader in = new BufferedReader(isr);
// lo mismo es que si hiciera: BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

public void menuPrincipal(Socket sock) throws IOException, ClassNotFoundException{
boolean repetir;
char op = 0;
repetir=true;
while(repetir){
//si quisiera (pero es ilogico ya que el metodo que voy a llamar esta en la misma clase),
//me podria crear un objeto MenuPersona menuPersona = new MenuPersona(); fuera del metodo
//para que no me lo pise, y luego llamarlo en lugar de Menu(); llamar a MenuPersona.Menu()
Menup();
op = in.readLine().charAt(0);
switch(op){
case '1' :
System.out.println("--Monstramos lista el directorio local del cliente--");

repetir=true;
break;

case '2':
System.out.println("--Monstramos lista el directorio remoto del servidor--");
VerFicheros vf = new VerFicheros();
vf.VerFichero();
repetir=true;
break;

case '3':
System.out.println("--envíamos un fichero especificado(del directorio local al remoto)--");
EnviarFichero ef = new EnviarFichero();
ef.EscribirFichero(sock);
ef.EnvioFicherosAServidor(socket);


repetir=true;
break;

case '4':
System.out.println("--recibe un fichero especificado(del riectorio remoto al local)--");

repetir=true;
break;




case '5':
System.out.println("salir cerrando la conexión con el servidor y terminando el proceso cliente");
repetir = false;
System.out.println("Adios");
return;
}
}

}


private static void Menup() {
System.out.println("||================================== MENU PRINCIPAL ==================================||");
System.out.println("|| ---------------------- ¡¡¡¡Hola!!! Elige una opcion por favor ---------------------||");
System.out.println("|| ---------------------- --------------------- ||");
System.out.println("|| 1.- 'lc': lista el directorio local del cliente ||");
System.out.println("|| 2.- 'lr': lista el directorio remoto del servidor ||");
System.out.println("|| 3.-'s': envía un fichero especificado(del directorio local al remoto) ||");
System.out.println("|| 4.-'r': recibe un fichero especificado(del riectorio remoto al local) ||" );
System.out.println("|| 5.-'q': salir cerrando la conexión con el servidor y terminando el proceso cliente||");
System.out.println("||====================================================================================||");
System.out.println("||====================================================================================||");
}

}


Clase Servidor:

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Servidor{
private final static int puerto = 0;


public static void main(String[] args){
try{
ServerSocket serverSocket = new ServerSocket(puerto);
System.out.println("El Servidor se ata al puerto " + serverSocket.getLocalPort());
while(true){
Socket conn = serverSocket.accept();
Procesador p = new Procesador(conn);
p.start();
}

} catch(IOException e){
e.printStackTrace();
}
}

}

Clase Procesador(para los hilos):

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.ArrayList;

public class Procesador extends Thread{

private static Socket conn;

public Procesador(Socket conn){
this.conn = conn;
}

public synchronized void run(){
System.out.println("La direccion IP del cliente es: " + conn.getLocalAddress() + " y su puerto es " + conn.getPort());

Cliente cliente = new Cliente();
try {
cliente.menuPrincipal(conn);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}


Clase VerFicheros(para ver listado de ficheros):



import java.io.File;

public class VerFicheros {

//
public void VerFichero() {

/**Lo primero que haremos será obtener una referencia al directorio que queremos listar.
*Utilizaremos, en este caso, la clase File para almacenar la referencia.*/
File dir = new File("c:\\");

/**Uno de los métodos de la clase File es .list().
* Mediante este método recuperaremos los ficheros que componen el directorio especificado.
* Lo que nos devuelve es un array de cadenas.*/
String[] ficheros = dir.list();


if (ficheros == null)
System.out.println("No hay ficheros en el directorio especificado");
else {
for (int x=0;x<ficheros.length;x++){
System.out.println(ficheros[x]);
}
}

}

}


Clase EnviarFicheros(la uso para enviar):

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;


public class EnviarFichero {
public void EnvioFicherosAServidor(Socket sock){

try{
Scanner s=new Scanner(System.in);
System.out.println("Ingrese el path del archivo a enviar: " );
String path=s.nextLine();
PrintStream envio=new PrintStream(sock.getOutputStream());
//String path = "C:\\hola.txt";
System.out.println(path);
FileInputStream origen=new FileInputStream(path);
byte[] buffer = new byte[1024];
int len;
while((len=origen.read(buffer))>0){
envio.write(buffer,0,len);
}
}catch(IOException e){
e.printStackTrace();
}

}

public void EscribirFichero(Socket socket) throws IOException{
try{
Scanner s=new Scanner(System.in);
System.out.println("Ingrese el path donde desea escribir el archivo: " );
String path=s.nextLine();
InputStream llegada = socket.getInputStream();
//String path = "C:\\Java";
System.out.println(path);
FileOutputStream destino=new FileOutputStream(path);
byte[] buffer = new byte[1024];
int len;
while((len=llegada.read(buffer))>0){
destino.write(buffer,0,len);
}
}catch(IOException e){
e.printStackTrace();
}
}
}




Pongo entre \\ como pongo yo el path si esta mal como lo pongo corregirme porfavor, les agradezco que testen mi codigo y si le salta algun error de que meten mal el directorio al darle a la opcion de enviar, la opcion 3