Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Name von Verzeichnis bekommen - Files von einem Ordner auslesen
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?
}
}
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
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";
}
}
}