recursividad
hola gente... Estoy haciendo un programa que muestre los archivos contenidos dentro de un directorio pasado por parámetro, y que entre dentro de los directorios y muestre los archivos que este tieene, y asà sucesivamente mientras hayan directorios dentro de otros.
Mi problema principal reside en que me da un fallo al compilar en la lÃnea a la que llamo a la misma función. Alguien puede decirme que es lo que falla?
pego el fichero para que sean conscientes de mi pregunta:
import java.io.*;
public class ListDirs {
public void main(String[] args){
if (args.length > 0){
File dir= new File(args[0]);
if (dir.isDirectory()){
String[] s = dir.list();
File[] files = new File[s.length];
for (int i=0;i<files.length;i++){
files[i] = new File(dir.getPath(),s[i]);
if (files[i].isDirectory())
ListDirs(files[i].getPath()); ///falt solucinar la llamada recursiva
else
System.out.println(files[i].getCanonicalPath());
}
}
else
System.out.println("No es un directorio");
}
else
System.out.println("Introduzca un directorio como parámetro");
}
}
Mi problema principal reside en que me da un fallo al compilar en la lÃnea a la que llamo a la misma función. Alguien puede decirme que es lo que falla?
pego el fichero para que sean conscientes de mi pregunta:
import java.io.*;
public class ListDirs {
public void main(String[] args){
if (args.length > 0){
File dir= new File(args[0]);
if (dir.isDirectory()){
String[] s = dir.list();
File[] files = new File[s.length];
for (int i=0;i<files.length;i++){
files[i] = new File(dir.getPath(),s[i]);
if (files[i].isDirectory())
ListDirs(files[i].getPath()); ///falt solucinar la llamada recursiva
else
System.out.println(files[i].getCanonicalPath());
}
}
else
System.out.println("No es un directorio");
}
else
System.out.println("Introduzca un directorio como parámetro");
}
}
a quien habia que pegar es a ti...
ListDirs no es una función, es una clase
prueba a cambiar ListDirs (...) por main (...) pero es la peor clase que he visto nunca, un main recursivo!!
ListDirs no es una función, es una clase
prueba a cambiar ListDirs (...) por main (...) pero es la peor clase que he visto nunca, un main recursivo!!
perdón, lo de ListDirs fue un intento a la desesperada, yo llamaba a main, y es asà como me daba error. Y en cuanto a la calidad, todo evolucinona, o es que tu empezaste con la POO sabiendo ya?
vaya... parece mentira que un genio malgaste su tiempo fanfarroneando y tirando por los suelos al resto. Pero bueno.... que sepas que tu solución no ha sido válida, con tanto que sabes.
Bye, Bye.
Bye, Bye.
En fÃn.... .... ya esta solucionado aunque con una pequeña variación.
import java.io.*;
public class ListDirs {
public static void mostrar_dir(File dir){
String[] s = dir.list();
File[] files = new File[s.length];
for (int i=0;i<files.length;i++){
files[i] = new File(dir.getPath(),s[i]);
if (files[i].isDirectory())
mostrar_dir(files[i]);
else
System.out.println(files[i].getPath());
}
}
public static void main(String[] args){
if (args.length > 0){
File dir= new File(args[0]);
if (dir.isDirectory())
mostrar_dir(dir);
else
System.out.println("No es un directorio");
}
else
System.out.println("Introduzca un directorio como parámetro");
}
}
import java.io.*;
public class ListDirs {
public static void mostrar_dir(File dir){
String[] s = dir.list();
File[] files = new File[s.length];
for (int i=0;i<files.length;i++){
files[i] = new File(dir.getPath(),s[i]);
if (files[i].isDirectory())
mostrar_dir(files[i]);
else
System.out.println(files[i].getPath());
}
}
public static void main(String[] args){
if (args.length > 0){
File dir= new File(args[0]);
if (dir.isDirectory())
mostrar_dir(dir);
else
System.out.println("No es un directorio");
}
else
System.out.println("Introduzca un directorio como parámetro");
}
}
import java.io.*;
public class ListDir {
public static void main(String[] args) throws Exception
{
if (args.length > 0){
File dir= new File(args[0]);
if (dir.isDirectory()){
String[] s = dir.list();
File[] files = new File[s.length];
for (int i=0;i<files.length;i++){
files[i] = new File(dir.getPath(),s[i]);
if (files[i].isDirectory())
main(new String [] {files[i].getPath()}); ///falt solucinar la llamada recursiva
else
System.out.println(files[i].getCanonicalPath());
}
}
else
System.out.println("No es un directorio");
}
else
System.out.println("Introduzca un directorio como parámetro");
}
}
para cambiar menos cosas, sabes?
public class ListDir {
public static void main(String[] args) throws Exception
{
if (args.length > 0){
File dir= new File(args[0]);
if (dir.isDirectory()){
String[] s = dir.list();
File[] files = new File[s.length];
for (int i=0;i<files.length;i++){
files[i] = new File(dir.getPath(),s[i]);
if (files[i].isDirectory())
main(new String [] {files[i].getPath()}); ///falt solucinar la llamada recursiva
else
System.out.println(files[i].getCanonicalPath());
}
}
else
System.out.println("No es un directorio");
}
else
System.out.println("Introduzca un directorio como parámetro");
}
}
para cambiar menos cosas, sabes?
