Foros del Web » Programación para mayores de 30 ;) » Java »

problema con un array de files

Estas en el tema de problema con un array de files en el foro de Java en Foros del Web. hola lo que quiero hacer es iterar en un while un array para crear 432 archivos fisicamente en una carpeta: File f = new File[432]; ...
  #1 (permalink)  
Antiguo 16/08/2012, 20:14
 
Fecha de Ingreso: agosto-2012
Mensajes: 7
Antigüedad: 11 años, 8 meses
Puntos: 1
Exclamación problema con un array de files

hola lo que quiero hacer es iterar en un while un array para crear 432 archivos fisicamente en una carpeta:

File f = new File[432];

int i=0;
while((s = entrada.readLine())!=null){

f[i]=new File("D:\\...\\archs\\"+s);
f[i].createNewFile();

i++;

}

"entrada" es un archivo de texto que contiene 432 nombres para nombrar esos archivos y "s" es un string
mi problema es que el while lo hace una vez completa pero cuando itera la segunda vez llega hasta la linea de "f[i].createnewfile()" y ahi corta (ya lo probe en un for y pasa lo mismo).
cual es el problema? por que no me crea todos los archivos sino solo el primero?
desde ya muchas gracias
  #2 (permalink)  
Antiguo 17/08/2012, 03:29
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: problema con un array de files

¿Qué significa corta?¿Sale alguna excepción?¿Sólo itera una vez y continua correctamente?
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 17/08/2012, 06:38
 
Fecha de Ingreso: agosto-2012
Mensajes: 7
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: problema con un array de files

con "corta " me refiero a que sale del bucle y ejecuta todo lo demas.
te agrego un detalle mas: si saco la linea de codigo "f[i].createNewFile();" todo funciona normalmente asi que ese es el problema que me saca del bucle.
quizas estoy haciendo algo ilegal con ese metodo porque es la primera vez que lo uso, no se
  #4 (permalink)  
Antiguo 17/08/2012, 06:57
Avatar de jomaruro
Colaborador
 
Fecha de Ingreso: junio-2002
Ubicación: Naboo
Mensajes: 5.442
Antigüedad: 21 años, 9 meses
Puntos: 361
Respuesta: problema con un array de files

Hola:

¿Has probado a ver que valor tiene s en cada iteración? ¿No será que por algún motivo la segunda vez que hace el bucle el valor es null?

Saludos.

  #5 (permalink)  
Antiguo 17/08/2012, 07:02
 
Fecha de Ingreso: agosto-2012
Mensajes: 7
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: problema con un array de files

hice esta prueba:

while((s = entrada.readLine())!=null){

System.out.println(s);

}

y me imprimio todas los 432 lineas del archivo de texto
  #6 (permalink)  
Antiguo 17/08/2012, 07:11
 
Fecha de Ingreso: agosto-2012
Mensajes: 7
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: problema con un array de files

hice una nueva prueba:

int i=0;

while((s = entrada.readLine())!=null){;

f[i]=new File("D:\\...\\archs\\"+s);

System.out.println(creararch(i));
i++;

}

donde creararch() es ese metodo

public static boolean creararch(int i){
boolean b=false;
try{
b=f[i].createNewFile();
}
catch(IOException ioe){}
return b;
}


y me imprime 1 vez "true" y 431 veces "false"
  #7 (permalink)  
Antiguo 17/08/2012, 09:17
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: problema con un array de files

¿Puedes poner las dos o tres primeras líneas del fichero tal y como te las muestra el System?

http://docs.oracle.com/javase/6/docs...createNewFile()

Cita:
Returns:
true if the named file does not exist and was successfully created; false if the named file already exists
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #8 (permalink)  
Antiguo 17/08/2012, 10:33
 
Fecha de Ingreso: agosto-2012
Mensajes: 7
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: problema con un array de files

es que la carpeta esta vacia y cuando ejecuto el programa crea el primer archivo solamente.
ademas quise probar e hice hadcode con por ejemplo "f[1].createNewFile()" y no pasa nada
solo crea el f[0]. es extraño
  #9 (permalink)  
Antiguo 17/08/2012, 12:33
Avatar de jomaruro
Colaborador
 
Fecha de Ingreso: junio-2002
Ubicación: Naboo
Mensajes: 5.442
Antigüedad: 21 años, 9 meses
Puntos: 361
Respuesta: problema con un array de files

Hola:

Creo que el problema puede estar aquí.

Cita:
Iniciado por diegovos Ver Mensaje
f[i]=new File("D:\\...\\archs\\"+s);
el valor de f[i] cuando es mayor que 0, es decir cuando ya ha creado el primer archivo, es siempre el mismo.

Prueba a ver que valor tiene f[i] antes de crear el fichero.

Saludos.

  #10 (permalink)  
Antiguo 17/08/2012, 13:06
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: problema con un array de files

Cita:
el valor de f[i] cuando es mayor que 0, es decir cuando ya ha creado el primer archivo, es siempre el mismo.

Prueba a ver que valor tiene f[i] antes de crear el fichero.
Tal y como está el código eso no puede ser, porque está i++ y porque en cada pasada se sobreescribiría f[0] con un nuevo "fichero" con un nuevo nombre.

Una de dos, o el código no es exactamente el que está puesto, o entrada.readLine() (no sabemos qué es) está leyendo siempre el mismo valor, de ahí mi pregunta de qué pinta.

Código Javascript:
Ver original
  1. Scanner sc = new Scanner(System.in);
  2.         File[] files = new File[3];
  3.         String s;
  4.         int i = 0;
  5.         while(!(s = sc.nextLine()).equals("4"))
  6.         {  
  7.             files[i] = new File(s);
  8.             System.out.println(files[i].createNewFile());
  9.             System.out.println(i);
  10.             i++;
  11.         }

Funciona perfectamente.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #11 (permalink)  
Antiguo 17/08/2012, 13:24
Avatar de jomaruro
Colaborador
 
Fecha de Ingreso: junio-2002
Ubicación: Naboo
Mensajes: 5.442
Antigüedad: 21 años, 9 meses
Puntos: 361
Respuesta: problema con un array de files

Hola:

Cita:
Iniciado por Xerelo Ver Mensaje
Tal y como está el código eso no puede ser, porque está i++ y porque en cada pasada se sobreescribiría f[0] con un nuevo "fichero" con un nuevo nombre.
Está claro que el valor del índice i cambia en cada iteración, pero eso no garantiza que el valor de s si cambie.

Cita:
Iniciado por diegovos Ver Mensaje
f[i]=new File("D:\\...\\archs\\"+s);
con lo cual no garantiza que el contenido de todos los elementos del array f[i] no sea el mismo y al ser el mismo no va a crear el archivo nada más que la primera vez.

Cita:
Returns: true if the named file does not exist and was successfully created; false if the named file already exists
que es a lo que yo me refiero.

Saludos.

  #12 (permalink)  
Antiguo 17/08/2012, 13:30
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: problema con un array de files

Entonces estamos de acuerdo
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #13 (permalink)  
Antiguo 17/08/2012, 13:33
Avatar de jomaruro
Colaborador
 
Fecha de Ingreso: junio-2002
Ubicación: Naboo
Mensajes: 5.442
Antigüedad: 21 años, 9 meses
Puntos: 361
Respuesta: problema con un array de files

Claro que si, es que es la única razón que encuentro para que el código no funcione.

Por cierto, enhorabuena por tu mensaje número 1000.

Saludos.

  #14 (permalink)  
Antiguo 17/08/2012, 16:34
 
Fecha de Ingreso: agosto-2012
Mensajes: 7
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: problema con un array de files

Cita:
Iniciado por diegovos Ver Mensaje
hice esta prueba:

while((s = entrada.readLine())!=null){

System.out.println(s);

}

y me imprimio todas los 432 lineas del archivo de texto
aca les explique que ya habia comprobado que los valores de s cambian en cada iteracion

el problema comienza cuando el valor de i es 1. solo con i=0 crea el archivo

tambien probe que todos los elementos del array no fueran null imprimiendo el path absoluto de cada uno
  #15 (permalink)  
Antiguo 17/08/2012, 17:00
 
Fecha de Ingreso: agosto-2012
Mensajes: 7
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: problema con un array de files

damas y caballeros encontre la solucion!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

era un problemita tan tonto!

cada linea del archivo de texto representado por "entrada" era de la siguiente forma:

numero+tab+texto

el "tab" era el problema. el sistema no me permitia crear un archivo en el que el nombre tuviera un tab.

les pido disculpas y les recontra agradezco por el tiempo que dedicaron a ayudarme.
saludos
  #16 (permalink)  
Antiguo 18/08/2012, 05:52
Avatar de jomaruro
Colaborador
 
Fecha de Ingreso: junio-2002
Ubicación: Naboo
Mensajes: 5.442
Antigüedad: 21 años, 9 meses
Puntos: 361
Respuesta: problema con un array de files

Fantástico, me alegro que lo hayas solucionado.

Saludos.


Etiquetas: files, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:37.