no hace caso al else....¿por qué?

goku
09 de Marzo del 2005
Hola, tengo el siguiente código:
import java.io.File;
class Dirlist {
public static void main(String args[]) {
String dirname = "c:/Curso";
File f1 = new File(dirname);
if (f1.isDirectory()) {
System.out.println("Directorio de " + dirname);
String s[] = f1.list();
for (int y = 0; y < s.length; y++) {
if (f1.isDirectory()){
System.out.println(s[y] + " es un directorio");
}else{
if (f1.isFile()){
System.out.println(s[y] + " es un fichero");
}
}
}
}
}
No ejecuta bien el if ya que en el directorio curso tengo un subdirectorio "temario" y un fichero "index.txt" y dentro de "temario" tengo "index1.htm","index2,htm", al ejecutarlo me dice que temario es un directorio y que index.txt es un directorio....y no es cierto, es decir, no pasa por el else...a que puede ser debido?
Quisera también que me contase cuantos ficheros hay dentro de curso, es decir, habría 3 (2 dentro de temario y uno fuera)...¿cómo podría hacerlo? y solucionar lo del else?
Gracias.

David
09 de Marzo del 2005
Hola

Pues muy sencillo: estás comparando siempre con f1, es decir con el directorio inicial. Lo que quieres hacer sería así:

File f1 = new File(dirname);

if (f1.isDirectory()) {
System.out.println("Directorio de " + dirname);
File f[] = f1.listFiles();
for (int y = 0; y < f.length; y++) {
if (f[y].isDirectory())
System.out.println(f[y].getName() + " es un directorio");
else if (f[y].isFile())
System.out.println(f[y].getName() + " es un fichero");
}
}


Salud

David