Durch Dateisystem rekursiv iterieren



  • Hallo,

    ich versuche durchs Dateisystem zu iterieren, aber irgendwie bekomme ich immer eine NullPointerException und weiß nicht warum?

    import java.io.File;
    
    public class javaProject{
    	public static boolean is_symlink(File f) throws Exception{
    		return !f.getAbsolutePath().equals(f.getCanonicalPath());
    	}
    
    	public static void through_fs(File root) throws Exception{
    		for(File file : root.listFiles()){
    			System.out.println(file.getAbsolutePath());
    
    			if(file.isDirectory() && !is_symlink(file))
    				through_fs(file);
    		}
    	}
    
    	public static void main(String[] arguments) throws Exception{
    		through_fs(new File("/"));
    	}
    }
    


  • Na dann schau Dir doch mal den Stacktrace genau an - da sind Zeilennummern drin! Und dann schau Dir die Zeile mal genau an, da ist ja nur ein Funktionsaufruf drin. Und dann gib Dir die Variable, die da nullpointert mal aus - dann sollte Dir ein Licht aufgehen.



  • PS: Es gibt FileVisitor im JDK - damit brauchst Du das rekursiv iterieren nicht selber implementieren!



  • Stimmt, ich hab File.canRead() vergessen, da es da einen Ordner gab, der keine read-Permissions hatte.



  • SG1 schrieb:

    PS: Es gibt FileVisitor im JDK - damit brauchst Du das rekursiv iterieren nicht selber implementieren!

    Ah, kk, danke für die Info.


Anmelden zum Antworten