Name von Verzeichnis bekommen - Files von einem Ordner auslesen

Bitte aktiviere JavaScript!
Hallo zusammen,

ich möchte gerne folgendes realisieren:
Ich habe einen Ordner "Test1", was mein Root - Folder ist.
Darunter gibt es Unterordner (Test1, Test2...). Darunter gibt es dann die Sprachen (de, en)... Und innerhalb dieser Ordner gibt es dann die Dateien.

Was ich benötige:
- a) Schleife über diesen Ordner, der alle File einließt
- b) Ordner (Sprache) bekommen, sodass ich später in einem Objekt den Sprachschlüssel speichern kann.

Files
- Test1
- de
- test.html
- en
- test.html

- Test2
- de
- test.html
- en
- test.html

Also später dann, sowas:
Java:
MyClass myObject = new MyClass();
myObject.setLanguage(Name vom Ordner der Datei);
myObject.setText(String von der Datei);
Die Files kann ich ja so einlesen:
Java:
        File f = new File("C:/Programme");
        File[] fileArray = f.listFiles();
        
        for (int i = 0; i < fileArray.length; i++) {
            
            File currentFile = fileArray[i];
            
            if(!currentFile.isDirectory()) {
                -> Wann speichere ich den Namen des Verzeichnis ab oder kann ich den Verzeichnisnamen der jeweiligen Datei von dem File ansich bekommen?
            }
        }
Danke für die Hilfe.
 
Wenn du ein Ordner gefunden hast, holst du dir von diesem Ordner alle Dateien, gehst diese durch, liest sie ein, und erstellst aus dessen Inhalt und dem aktuellen Ordernamen dein MyClass Objekt. Das lässt sich auch sehr schön rekursiv machen :p


PS: Ich würde das ganze wohl eher über einen FileVisitor lösen anstatt händisch anzufangen, zu entscheiden, ob du jetzt einen Ordner hast oder nicht.
Java:
public class Main {
    public static void main(String[] args) {
        List<LocalizedFile> files = new ArrayList<>();

        SimpleFileVisitor<Path> visitor = new SimpleFileVisitor<Path>() {
            private String language;
            @Override
            public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
                this.language = dir.getFileName().toString();
                return FileVisitResult.CONTINUE;
            }

            @Override
            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                files.add(new LocalizedFile(language, String.join("\n", Files.readAllLines(file))));
                return FileVisitResult.CONTINUE;
            }
        };

        try {
            Files.walkFileTree(Paths.get("D:/Files"), visitor);
            files.forEach(System.out::println);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    static class LocalizedFile {
        private String language;
        private String content;

        public LocalizedFile(String language, String content) {
            this.language = language;
            this.content = content;
        }

        @Override
        public String toString() {
            return "lang[" + language + "]\n" + content + "\n";
        }
    }
}
 
Was willst du denn erreichen?
Das klingt nach üblicher Internationalisierung, wofür es meist bessere Möglichkeiten gibt.
 
Ich möchte gerne HTML Dateien einlesen.

Ich habe beim Mac noch irgendwelche Temporäre Files (.DS_Store), wie kann ich diese ausschließen?
 
Und die Dateien sind nicht Teil des Programms und liegen im Dateisystem?


Zum Ausschließen von Dateien einfach ’n if mit passender Bedingung, das ist doch wirklich kein Hexenwerk ;)
 
Passende Stellenanzeigen aus deiner Region:

Oben