no hace caso al else....¿por qué?
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.
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.
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
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