elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: [1]
1  Programación / Java / Re: TRANSFERENCIA DE ARCHIVOS en: 27 Mayo 2011, 10:44 am
Hola, como pasais el path me lo puedes indicar paso a paso?
2  Programación / Java / Ayudaaaaaa en: 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)
  
Código:
 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
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.io.PrintWriter;
  5. import java.net.Socket;
  6.  
  7.  
  8. public class Cliente {
  9.   private static Socket socket;
  10.   public static void main(String[] args) throws IOException, ClassNotFoundException {
  11.        if(args.length != 2){
  12.            System.out.println("Debe especificar el host y el puerto del servidor");
  13.            System.exit(-1);
  14.        }
  15.        String hostServidor = args[0];
  16.        int puertoServidor = Integer.parseInt(args[1]);
  17.  
  18.        try{
  19.            socket = new Socket(hostServidor, puertoServidor);
  20.            System.out.println("El cliente se ha conectado con exito al servidor " + hostServidor + ":" + puertoServidor);
  21.        }catch(IOException e){
  22.            e.printStackTrace();
  23.        }
  24.  
  25.   }
  26.  
  27.   //el inputstreamreader coge un chorro de bytes y lo transforma a characteres
  28.          InputStreamReader isr = new InputStreamReader(System.in);
  29.   //el bufferedReder pasa de los characteres a lineas,tiene metodos readline() que lee lineas por ejemplo
  30.           BufferedReader in = new BufferedReader(isr);
  31.   // lo mismo es que si hiciera: BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  32.  
  33.     public void menuPrincipal(Socket sock) throws IOException, ClassNotFoundException{
  34.              boolean repetir;
  35.                char op = 0;
  36.                 repetir=true;
  37.                while(repetir){
  38.   //si quisiera (pero es ilogico ya que el metodo que voy a llamar esta en la misma clase),
  39.   //me podria crear un objeto MenuPersona menuPersona = new MenuPersona(); fuera del metodo
  40.   //para que no me lo pise, y luego llamarlo en lugar de Menu(); llamar a MenuPersona.Menu()
  41.                     Menup();
  42.                    op = in.readLine().charAt(0);
  43.                    switch(op){
  44.         case '1' :
  45.               System.out.println("--Monstramos lista el directorio local del cliente--");
  46.  
  47.                        repetir=true;
  48.                     break;
  49.  
  50.         case '2':
  51.                 System.out.println("--Monstramos lista el directorio remoto del servidor--");
  52.                       VerFicheros vf = new VerFicheros();
  53.                       vf.VerFichero();
  54.                      repetir=true;
  55.                    break;
  56.  
  57.         case '3':
  58.              System.out.println("--envíamos un fichero especificado(del directorio local al remoto)--");
  59.                 EnviarFichero ef = new EnviarFichero();
  60.                 ef.EscribirFichero(sock);
  61.                 ef.EnvioFicherosAServidor(socket);
  62.  
  63.  
  64.                repetir=true;
  65.              break;
  66.  
  67.         case '4':
  68.              System.out.println("--recibe un fichero especificado(del riectorio remoto al local)--");
  69.  
  70.                repetir=true;
  71.              break;
  72.  
  73.  
  74.  
  75.  
  76.         case '5':
  77.               System.out.println("salir cerrando la conexión con el servidor y terminando el proceso cliente");
  78.                  repetir = false;
  79.               System.out.println("Adios");
  80.             return;
  81.                    }
  82.           }
  83.  
  84.              }
  85.  
  86.  
  87. private static void Menup() {
  88.   System.out.println("||================================== MENU PRINCIPAL ==================================||");
  89.   System.out.println("|| ---------------------- ¡¡¡¡Hola!!! Elige una opcion por favor ---------------------||");
  90.   System.out.println("|| ----------------------                                       --------------------- ||");
  91.   System.out.println("||  1.- ‘lc’: lista el directorio local del cliente                                   ||");
  92.   System.out.println("||  2.- ‘lr’: lista el directorio remoto del servidor                                 ||");
  93.   System.out.println("||  3.-‘s’: envía un fichero especificado(del directorio local al remoto)             ||");
  94.   System.out.println("||  4.-‘r’: recibe un fichero especificado(del riectorio remoto al local)             ||" );
  95.   System.out.println("||  5.-‘q’: salir cerrando la conexión con el servidor y terminando el proceso cliente||");
  96.   System.out.println("||====================================================================================||");
  97.   System.out.println("||====================================================================================||");  
  98.         }
  99.  
  100. }
  101.  

Clase Servidor:

Código
  1. import java.io.IOException;
  2. import java.net.ServerSocket;
  3. import java.net.Socket;
  4.  
  5. public class Servidor{
  6. private final static int puerto = 0;
  7.  
  8.  
  9. public  static void main(String[] args){
  10.    try{
  11.        ServerSocket serverSocket = new ServerSocket(puerto);
  12.        System.out.println("El Servidor se ata al puerto " + serverSocket.getLocalPort());
  13.        while(true){
  14.            Socket conn = serverSocket.accept();
  15.            Procesador p = new Procesador(conn);
  16.            p.start();
  17.        }
  18.  
  19.    } catch(IOException e){
  20.        e.printStackTrace();
  21.    }
  22. }
  23.  
  24. }

Clase Procesador(para los hilos):

Código
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.io.PrintWriter;
  5. import java.net.Socket;
  6. import java.util.ArrayList;
  7.  
  8. public class Procesador extends Thread{
  9.  
  10.    private static Socket conn;
  11.  
  12.    public Procesador(Socket conn){
  13.        this.conn = conn;
  14.    }
  15.  
  16.    public synchronized void run(){
  17.           System.out.println("La direccion IP del cliente es: " + conn.getLocalAddress() + " y su puerto es " + conn.getPort());
  18.  
  19.            Cliente cliente = new Cliente();
  20.            try {
  21.               cliente.menuPrincipal(conn);
  22.            } catch (IOException e) {
  23.               // TODO Auto-generated catch block
  24.               e.printStackTrace();
  25.            } catch (ClassNotFoundException e) {
  26.               // TODO Auto-generated catch block
  27.               e.printStackTrace();
  28.            }
  29.  
  30. }
  31. }


Clase VerFicheros(para ver listado de ficheros):


Código
  1. import java.io.File;
  2.  
  3. public class VerFicheros {
  4.  
  5.   //
  6.   public void VerFichero() {
  7.  
  8. /**Lo primero que haremos será obtener una referencia al directorio que queremos listar.
  9. *Utilizaremos, en este caso, la clase File para almacenar la referencia.*/
  10.      File dir = new File("c:\\");
  11.  
  12. /**Uno de los métodos de la clase File es .list().
  13.  * Mediante este método recuperaremos los ficheros que componen el directorio especificado.
  14.  *  Lo que nos devuelve es un array de cadenas.*/        
  15.      String[] ficheros = dir.list();
  16.  
  17.  
  18.      if (ficheros == null)
  19.         System.out.println("No hay ficheros en el directorio especificado");
  20.      else {
  21.         for (int x=0;x<ficheros.length;x++){
  22.            System.out.println(ficheros);
  23.  
  24.         }
  25.      }
  26.  
  27.   }
  28.  
  29. }

Clase EnviarFicheros(la uso para enviar):

Código
  1. import java.io.FileInputStream;
  2. import java.io.FileOutputStream;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.PrintStream;
  6. import java.net.ServerSocket;
  7. import java.net.Socket;
  8. import java.util.Scanner;
  9.  
  10.  
  11. public class EnviarFichero {
  12.   public void EnvioFicherosAServidor(Socket sock){
  13.  
  14.       try{
  15.          Scanner s=new Scanner(System.in);
  16.          System.out.println("Ingrese el path del archivo a enviar: " );
  17.          String path=s.nextLine();
  18.       PrintStream envio=new PrintStream(sock.getOutputStream());
  19.       //String path = "C:\\hola.txt";
  20.       System.out.println(path);
  21.       FileInputStream origen=new FileInputStream(path);
  22.       byte[] buffer = new byte[1024];
  23.       int len;
  24.       while((len=origen.read(buffer))>0){
  25.       envio.write(buffer,0,len);
  26.       }
  27.       }catch(IOException e){
  28.       e.printStackTrace();
  29.       }
  30.  
  31. }
  32.  
  33.   public void EscribirFichero(Socket socket) throws IOException{
  34.      try{
  35.         Scanner s=new Scanner(System.in);
  36.         System.out.println("Ingrese el path donde desea escribir el archivo: " );
  37.         String path=s.nextLine();
  38.         InputStream llegada = socket.getInputStream();
  39.         //String path = "C:\\Java";
  40.          System.out.println(path);
  41.         FileOutputStream destino=new FileOutputStream(path);
  42.         byte[] buffer = new byte[1024];
  43.         int len;
  44.         while((len=llegada.read(buffer))>0){
  45.         destino.write(buffer,0,len);
  46.         }
  47.         }catch(IOException e){
  48.            e.printStackTrace();
  49.            }
  50.   }
  51.   }
  52.  


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  Programación / Java / Ayuda Programa Java en: 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
  1. at java.io.FileOutputStream.open(Native Method)
  2. at java.io.FileOutputStream.<init>(FileOutputStream.java:209)
  3. at java.io.FileOutputStream.<init>(FileOutputStream.java:99)
  4. no entiendo porque les dejo aqui mi codigo a ver si me pueden ayudar please
  5.  
  6. clase Cliente:
  7.  
  8. import java.io.BufferedReader;
  9. import java.io.IOException;
  10. import java.io.InputStreamReader;
  11. import java.io.PrintWriter;
  12. import java.net.Socket;
  13.  
  14.  
  15. public class Cliente {
  16. private static Socket socket;
  17. public static void main(String[] args) throws IOException, ClassNotFoundException {
  18. if(args.length != 2){
  19. System.out.println("Debe especificar el host y el puerto del servidor");
  20. System.exit(-1);
  21. }
  22. String hostServidor = args[0];
  23. int puertoServidor = Integer.parseInt(args[1]);
  24.  
  25. try{
  26. socket = new Socket(hostServidor, puertoServidor);
  27. System.out.println("El cliente se ha conectado con exito al servidor " + hostServidor + ":" + puertoServidor);
  28. }catch(IOException e){
  29. e.printStackTrace();
  30. }
  31.  
  32. }
  33.  
  34. //el inputstreamreader coge un chorro de bytes y lo transforma a characteres
  35. InputStreamReader isr = new InputStreamReader(System.in);
  36. //el bufferedReder pasa de los characteres a lineas,tiene metodos readline() que lee lineas por ejemplo
  37. BufferedReader in = new BufferedReader(isr);
  38. // lo mismo es que si hiciera: BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  39.  
  40. public void menuPrincipal(Socket sock) throws IOException, ClassNotFoundException{
  41. boolean repetir;
  42. char op = 0;
  43. repetir=true;
  44. while(repetir){
  45. //si quisiera (pero es ilogico ya que el metodo que voy a llamar esta en la misma clase),
  46. //me podria crear un objeto MenuPersona menuPersona = new MenuPersona(); fuera del metodo
  47. //para que no me lo pise, y luego llamarlo en lugar de Menu(); llamar a MenuPersona.Menu()
  48. Menup();
  49. op = in.readLine().charAt(0);
  50. switch(op){
  51. case '1' :
  52. System.out.println("--Monstramos lista el directorio local del cliente--");
  53.  
  54. repetir=true;
  55. break;
  56.  
  57. case '2':
  58. System.out.println("--Monstramos lista el directorio remoto del servidor--");
  59. VerFicheros vf = new VerFicheros();
  60. vf.VerFichero();
  61. repetir=true;
  62. break;
  63.  
  64. case '3':
  65. System.out.println("--envíamos un fichero especificado(del directorio local al remoto)--");
  66. EnviarFichero ef = new EnviarFichero();
  67. ef.EscribirFichero(sock);
  68. ef.EnvioFicherosAServidor(socket);
  69.  
  70.  
  71. repetir=true;
  72. break;
  73.  
  74. case '4':
  75. System.out.println("--recibe un fichero especificado(del riectorio remoto al local)--");
  76.  
  77. repetir=true;
  78. break;
  79.  
  80.  
  81.  
  82.  
  83. case '5':
  84. System.out.println("salir cerrando la conexión con el servidor y terminando el proceso cliente");
  85. repetir = false;
  86. System.out.println("Adios");
  87. return;
  88. }
  89. }
  90.  
  91. }
  92.  
  93.  
  94. private static void Menup() {
  95. System.out.println("||================================== MENU PRINCIPAL ==================================||");
  96. System.out.println("|| ---------------------- ¡¡¡¡Hola!!! Elige una opcion por favor ---------------------||");
  97. System.out.println("|| ---------------------- --------------------- ||");
  98. System.out.println("|| 1.- ‘lc’: lista el directorio local del cliente ||");
  99. System.out.println("|| 2.- ‘lr’: lista el directorio remoto del servidor ||");
  100. System.out.println("|| 3.-‘s’: envía un fichero especificado(del directorio local al remoto) ||");
  101. System.out.println("|| 4.-‘r’: recibe un fichero especificado(del riectorio remoto al local) ||" );
  102. System.out.println("|| 5.-‘q’: salir cerrando la conexión con el servidor y terminando el proceso cliente||");
  103. System.out.println("||====================================================================================||");
  104. System.out.println("||====================================================================================||");
  105. }
  106.  
  107. }
  108.  
  109.  
  110. Clase Servidor:
  111.  
  112. import java.io.IOException;
  113. import java.net.ServerSocket;
  114. import java.net.Socket;
  115.  
  116. public class Servidor{
  117. private final static int puerto = 0;
  118.  
  119.  
  120. public static void main(String[] args){
  121. try{
  122. ServerSocket serverSocket = new ServerSocket(puerto);
  123. System.out.println("El Servidor se ata al puerto " + serverSocket.getLocalPort());
  124. while(true){
  125. Socket conn = serverSocket.accept();
  126. Procesador p = new Procesador(conn);
  127. p.start();
  128. }
  129.  
  130. } catch(IOException e){
  131. e.printStackTrace();
  132. }
  133. }
  134.  
  135. }
  136.  
  137. Clase Procesador(para los hilos):
  138.  
  139. import java.io.BufferedReader;
  140. import java.io.IOException;
  141. import java.io.InputStreamReader;
  142. import java.io.PrintWriter;
  143. import java.net.Socket;
  144. import java.util.ArrayList;
  145.  
  146. public class Procesador extends Thread{
  147.  
  148. private static Socket conn;
  149.  
  150. public Procesador(Socket conn){
  151. this.conn = conn;
  152. }
  153.  
  154. public synchronized void run(){
  155. System.out.println("La direccion IP del cliente es: " + conn.getLocalAddress() + " y su puerto es " + conn.getPort());
  156.  
  157. Cliente cliente = new Cliente();
  158. try {
  159. cliente.menuPrincipal(conn);
  160. } catch (IOException e) {
  161. // TODO Auto-generated catch block
  162. e.printStackTrace();
  163. } catch (ClassNotFoundException e) {
  164. // TODO Auto-generated catch block
  165. e.printStackTrace();
  166. }
  167.  
  168. }
  169. }
  170.  
  171.  
  172. Clase VerFicheros(para ver listado de ficheros):
  173.  
  174.  
  175.  
  176. import java.io.File;
  177.  
  178. public class VerFicheros {
  179.  
  180. //
  181. public void VerFichero() {
  182.  
  183. /**Lo primero que haremos será obtener una referencia al directorio que queremos listar.
  184. *Utilizaremos, en este caso, la clase File para almacenar la referencia.*/
  185. File dir = new File("c:\\");
  186.  
  187. /**Uno de los métodos de la clase File es .list().
  188.  * Mediante este método recuperaremos los ficheros que componen el directorio especificado.
  189.  * Lo que nos devuelve es un array de cadenas.*/
  190. String[] ficheros = dir.list();
  191.  
  192.  
  193. if (ficheros == null)
  194. System.out.println("No hay ficheros en el directorio especificado");
  195. else {
  196. for (int x=0;x<ficheros.length;x++){
  197. System.out.println(ficheros[x]);
  198. }
  199. }
  200.  
  201. }
  202.  
  203. }
  204.  
  205.  
  206. Clase EnviarFicheros(la uso para enviar):
  207.  
  208. import java.io.FileInputStream;
  209. import java.io.FileOutputStream;
  210. import java.io.IOException;
  211. import java.io.InputStream;
  212. import java.io.PrintStream;
  213. import java.net.ServerSocket;
  214. import java.net.Socket;
  215. import java.util.Scanner;
  216.  
  217.  
  218. public class EnviarFichero {
  219. public void EnvioFicherosAServidor(Socket sock){
  220.  
  221. try{
  222. Scanner s=new Scanner(System.in);
  223. System.out.println("Ingrese el path del archivo a enviar: " );
  224. String path=s.nextLine();
  225. PrintStream envio=new PrintStream(sock.getOutputStream());
  226. //String path = "C:\\hola.txt";
  227. System.out.println(path);
  228. FileInputStream origen=new FileInputStream(path);
  229. byte[] buffer = new byte[1024];
  230. int len;
  231. while((len=origen.read(buffer))>0){
  232. envio.write(buffer,0,len);
  233. }
  234. }catch(IOException e){
  235. e.printStackTrace();
  236. }
  237.  
  238. }
  239.  
  240. public void EscribirFichero(Socket socket) throws IOException{
  241. try{
  242. Scanner s=new Scanner(System.in);
  243. System.out.println("Ingrese el path donde desea escribir el archivo: " );
  244. String path=s.nextLine();
  245. InputStream llegada = socket.getInputStream();
  246. //String path = "C:\\Java";
  247. System.out.println(path);
  248. FileOutputStream destino=new FileOutputStream(path);
  249. byte[] buffer = new byte[1024];
  250. int len;
  251. while((len=llegada.read(buffer))>0){
  252. destino.write(buffer,0,len);
  253. }
  254. }catch(IOException e){
  255. e.printStackTrace();
  256. }
  257. }
  258. }



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
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines