LoslegenKostenlos loslegen

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
  • /d bedeutet Verzeichnis,
  • /f bedeutet 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

Kurs anzeigen

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");
  }
}
Code bearbeiten und ausführen