Aan de slagGa gratis aan de slag

Lokale bestanden vinden

Je wilt een klein programma schrijven dat alleen de lokale bestanden in een opgegeven map afdrukt. Je hebt de lijst met elementen in de map opgehaald, opgeslagen in DIRECTORY_CONTENT, maar:

  • Alle elementen bevatten eerst het type, daarna het element
  • /d betekent map,
  • /f betekent bestand
  • Sommige bestanden zijn verborgen en bevatten een "."
  • Bestanden in andere mappen mogen niet worden afgedrukt Laten we dat nu oplossen!

Deze oefening maakt deel uit van de cursus

Java voor gevorderden

Cursus bekijken

Oefeninstructies

  • Gebruik .substring(a,b) en .contains("") om te controleren of het element een bestand of map is.
  • Controleer of een bestand verborgen is wanneer het contains een ".".
  • Controleer dat een bestand lokaal is door zeker te weten dat het geen "/" bevat.
  • Gebruik de juiste logische operator om beide voorwaarden tegelijk te gebruiken.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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 bewerken en uitvoeren