File Ausgabe

Padawan

Erfahrenes Mitglied
Hallo Leute,
ich hatte eine Aufgabe bekommen, wo ich zwei Funktion ausfüllen sollte. Eine Funktion sollte die Dateien und die Unterverzeichnisse in einem Verzeichnis anzeigen.

Hier der Code:

Java:
public class Inf3A03DirContent {
    public static void main(String[] args) {
        String format = "C:\\Users\\...\\Desktop\\inf3.a03.DirContent\\src\\inf3\\a03";
        printAll(format);
    }
    
    public static void printAll(String path){
        printAll(File[] pfad = new File(path));
    }


    public static void printAll(File path){
        
        if(path == null){
            return;
        }
        
        String[] ausgabe = path.list();
 
        for(int x=0; x < ausgabe.length; x++) {
            System.out.println(ausgabe[x]+"\n");
        } 
    }
}


ich bekomme für die Zeile 8, 7 fehlermeldungen raus. Bei dem alle Fehlermeldungen Folgendermaßen aussehen:

Code:
error: illegal escape character String format= "C:\Users\...\Desktop\inf3.a03.DirContent\src\inf3\a03";

cih hoffe ihr könnt mir helfen. :(
 
Zuletzt bearbeitet von einem Moderator:
der fehler ist, dass die zeile 8 nicht funktioniert.
ich bekomme die Fehlermeldung:

error: illegal escape character String format= "C:\Users\...\Desktop\inf3.a03.DirContent\src\inf3\a03";
 
kann man es eigl. nicht so machen?
Bei

Java:
printAll(File pfad = new File(path));

funktioniert es auch nicht.

Für die main() bekomme ich keine Fehlermeldungen, ich bekomme halt die fehlermeldung für die zeile 8.
 
Zuletzt bearbeitet:
Hi,

1.
Java:
import java.io.File;
hast du hoffentlich drinnen?

2.
Java:
File[] pfad =
...was soll das bringen?
File[] bedeutet ein ARRAY von File-Objekten!
Außerdem warum eine Zuweisung bei der Parameter-Übergabe?

3.
Java:
+"\n"
System.out.println() sorgt schon für einen Zeilenvorschub.

Hier also der verbesserte Code:
Java:
import java.io.File;

public class Inf3A03DirContent {

    public static void main(String[] args) {
        String format = "C:\\Users\\...\\Desktop\\inf3.a03.DirContent\\src\\inf3\\a03";
        printAll(format);
    }
    
    public static void printAll(String path){
        printAll(new File(path));
    }
 
    public static void printAll(File path){
        
        if(path == null){
            return;
        }
        
        String[] ausgabe = path.list();
 
        for(int x=0; x < ausgabe.length; x++) {
            System.out.println(ausgabe[x]);
        } 
    }
}

PS: Ginge übrigens auch wesentlich kürzer:
Java:
public class Inf3A03DirContent {

    public static void main(String[] args) {
        for(String file : new java.io.File("C:\\Users\\...\\Desktop\\inf3.a03.DirContent\\src\\inf3\\a03").list())
            System.out.println(file);
    }
}

Gruß javaDeveloper2011
 
Hi,
ursprünglich sollte es so etwas sein:

Java:
package inf3.a03.dircontent;

import java.io.*;
import java.io.File;

public class Inf3A03DirContent {
    public static void main(String[] args) {
        String pfad="C:\\Users\\...\\Desktop\\inf3.a03.DirContent\\src\\inf3\\a03";
        
        System.out.println("\n Ausgabe von printAll(String)");
	printAll(pfad);
    }
    
    public static void printAll(String path){
        
       printAll(new File(path));
    }


    public static void printAll(File path){

           File pfad = path.getAbsoluteFile();
           String[] ausgabe = pfad.list();
           
           for(int x=0; x < path.length(); x++) {
               PrintFilesOnly(new File(ausgabe[x]));
               PrintDirsOnly(new File(ausgabe[x]));
           }
    }

    
    public static void PrintFilesOnly(File path){
        
        int width = 15;
        String format = "Datei %1$"+ width + "s";
        
        File[] pfad = path.listFiles();
        if(path != null){
            for(int i=0; i < pfad.length; i++){
                if(pfad[i].isFile() == true){
                    System.out.print("Datei %" + width + "s" + pfad[i].getName());
                }else if(pfad[i].isDirectory() == true){
                    PrintDirsOnly(pfad[i]);
                }else{
                    printAll(pfad[i]);
                }
            }
                         
            }else{
            System.out.println("PrintFilesOnly(): Falsche Pfad angabe");
        }
    }
    
    public static void PrintDirsOnly(File path){
        int width= 8;
        String format = "Verzeichnis %"+width+"s";
        
         File[] printDir = path.listFiles();
        

            for(int x=0; x < printDir.length; x++){
                if(path.isDirectory() == true){
                    System.out.print("Datei %" + width + "s" + printDir[x].getName());
                }else if(path.isFile() == true){
                    PrintFilesOnly(path);
                }else{
                    printAll(printDir[x]);
                }  
            }           
     }


Es kommt zwar keine Fehlermeldung, aber auch keine Ausgabe.

Lg Padawan
 
Ich nehme an du willst hier die Länge des Ausgabe-Arrays:
Java:
for(int x=0; x < path.length(); x++) {
               PrintFilesOnly(new File(ausgabe[x]));
               PrintDirsOnly(new File(ausgabe[x]));
           }
Length() auf einem File-Objekt macht folgendes:
The length, in bytes, of the file denoted by this abstract pathname, or 0L if the file does not exist
 
Hi,

1.
Java:
System.out.print("Datei %" + width + "s"
solche formatierungen mit "%" funktionieren soweit ich weis in Java nicht oder sind zumindest unüblich und nicht mit System.out.println möglich.

2. Ich kann dein Programm nicht komplett verstehen, aber so denke ich müsste es gehen:
Java:
package inf3.a03.dircontent;

import java.io.File;
 
public class Inf3A03DirContent {

    public static void main(String[] args) {
        String path = "/home/nikolas";//"C:\\Users\\...\\Desktop\\inf3.a03.DirContent\\src\\inf3\\a03";
        printAll(path);
    }
    
    public static void printAll(String path){
        File file = new File(path);
        if(file.exists())
            printAllFilesAndDirs(file);
        else
            System.err.println(path + " existiert nicht!");
    }
 
 
    public static void printAllFilesAndDirs(File path){
        path = path.getAbsoluteFile();
        printFilesOnly(path);
        printDirsOnly(path);
    }
 
    
    public static void printFilesOnly(File path){
        File[] pfad = path.listFiles();
        for(int i=0; i<pfad.length; i++){
            if(pfad[i].isFile() == true){
                System.out.println("Verzeichnis: " + pfad[i].getName());
            }
        }
    }
    
    public static void printDirsOnly(File path){
        File[] printDir = path.listFiles();
        for(int x=0; x<printDir.length; x++){
            if(printDir[x].isDirectory() == true){
                System.out.println("Datei: " + printDir[x].getName());
            }
        }           
     }
 }

Und auch nochmal die Kurz-Variante...
Java:
package inf3.a03.dircontent;

import java.io.File;
 
public class Inf3A03DirContent {

    public static void main(String[] args) {
        File path = new File("C:\\Users\\...\\Desktop\\inf3.a03.DirContent\\src\\inf3\\a03");
        if(path.exists()){
            path = path.getAbsoluteFile();
            for(File file : path.listFiles())
                if(file.isFile())
                    System.out.println("Verzeichnis: " + file.getName());
            for(File dir : path.listFiles())
                if(dir.isDirectory())
                    System.out.println("Datei: " + dir.getName());
        }
        else
            System.err.println(path + " existiert nicht!");
    }
 }

Gruß
 

Neue Beiträge

Zurück