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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ayuda Programa Java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda Programa Java  (Leído 3,229 veces)
supersergio88

Desconectado Desconectado

Mensajes: 3


Ver Perfil
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


« Última modificación: 1 Junio 2011, 00:46 am por Littlehorse » En línea

kiriost

Desconectado Desconectado

Mensajes: 58


www.godsys.com.ar Hacking y Programación


Ver Perfil WWW
Re: Ayuda Programa Java
« Respuesta #1 en: 28 Mayo 2011, 22:14 pm »

La próxima utiliza la etiqueta [ code] o GeSHi para colocar código.

Según veo el error es que con la función para abrir ficheros estas abriendo una carpeta. No tengo mucho tiempo para darle una leída a tu Código. Cuando pueda la prueba y te digo :o


« Última modificación: 1 Junio 2011, 02:56 am por Novlucker » En línea

http://www.godsys.com.ar > Programación. Hacking y Cracking. Sistemas. Desarrollo Web.
Java, C/C++, PHP, Python, Perl, HTML, Game-Hacking, Defacing, Desarrollo Web, GNU/Linux, y más
Littlehorse
All the world's a stage
Colaborador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Ayuda Programa Java
« Respuesta #2 en: 1 Junio 2011, 00:45 am »

Te lo muevo a Java.

No he leído el código pero depura el programa y verifica que contenido le estas pasando a FileOutputStream. Si estas con Eclipse, coloca un breakpoint en la linea del error y agrega un watch a la cadena que le pasas a FileOutputStream.

Es muy probable que sea lo que dice kiriost, de hecho el error lo deja claro, pero mas vale asegurarse haciéndose amigo del debug.

Saludos!
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con programa de java...
Java
Dulcrash 7 5,683 Último mensaje 8 Noviembre 2008, 09:35 am
por juancho77
Ayuda con un programa en Java
Java
jpxc 1 2,767 Último mensaje 10 Marzo 2010, 06:34 am
por Leyer
AYUDA CON ESTE PROGRAMA JAVA¡¡¡¡¡
Ejercicios
DomInYK 3 5,684 Último mensaje 4 Agosto 2011, 01:57 am
por bengy
[Ayuda] Hacer un programa java que marque solo
Java
777Rubenix777 1 3,397 Último mensaje 4 Julio 2011, 01:44 am
por [Case]
AYUDA CON PROGRAMA EN JAVA
Java
RADIACTIVO 4 3,065 Último mensaje 19 Octubre 2012, 17:01 pm
por RADIACTIVO
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines