Lokale Dateien finden
Du willst ein kleines Programm schreiben, das nur die lokalen Dateien in einem angegebenen Verzeichnis ausgibt. Du konntest bereits die Liste der Elemente im Verzeichnis abrufen, gespeichert in DIRECTORY_CONTENT, aber:
- Alle Elemente enthalten zuerst den Typ, dann das Element
/dbedeutet Verzeichnis,/fbedeutet Datei- Einige Dateien sind versteckt und enthalten einen
"." - Dateien in anderen Verzeichnissen sollen nicht ausgegeben werden Lass uns das jetzt beheben!
Diese Übung ist Teil des Kurses
Java für Fortgeschrittene
Anleitung zur Übung
- Verwende
.substring(a,b)und.contains(""), um zu prüfen, ob das Element eine Datei oder ein Verzeichnis ist. - Prüfe, ob eine Datei versteckt ist, wenn sie einen
"."contains. - Prüfe, dass eine Datei lokal ist, indem du sicherstellst, dass sie kein
"/"enthält. - Verwende den richtigen logischen Operator, um beide Bedingungen gleichzeitig zu nutzen.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
class ls {
static boolean isFile(String elem) {
// Check that the first 3 characters of the element contain /f as a substring
return elem.____(0, 3).____("/f");
}
static boolean isHidden(String elem) {
// Use the appropriate method to make sure that file is hidden
return elem.____(".");
}
static boolean isNonLocal(String elem) {
// Use the correct method to determine whether a file is in a directory
return elem.____(____, elem.length()).____(____);
}
public static void main(String[] args) {
int hiddenCounter = 0, directoryCounter = 0, nestedCounter = 0;
for (String elem : DIRECTORY_CONTENT) {
if (isFile(elem)) {
if (!isHidden(elem)) System.out.print(elem.substring(2));
// Use a logical operator to make it correct
else if (isHidden(elem) ____ !isNonLocal(elem)) hiddenCounter++;
else nestedCounter++;
} else directoryCounter++;
}
printer(hiddenCounter, directoryCounter, nestedCounter);
}
static String[] DIRECTORY_CONTENT = {"/d .Trash", "/f .history", "/d Applications", "/f tmp", "/f script", "/d Documents", "/f Documents/.bankAccounts", "/f .sshKeys", "/d Pictures", "/f content", "/f Documents/file"};
static void printer(int hiddenCounter, int directoryCounter, int nestedCounter) {
System.out.println();
System.out.println("With :\n" + hiddenCounter + " hidden files,\n" + directoryCounter + " directories,\nAnd " + nestedCounter + " nested files");
}
}