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
/dbetekent map,/fbetekent 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
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
containseen".". - 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");
}
}