Repérer les fichiers locaux
Vous voulez écrire un petit programme qui affichera uniquement les fichiers locaux dans un répertoire donné. Vous avez pu récupérer la liste des éléments du répertoire, stockée dans DIRECTORY_CONTENT, mais :
- Tous les éléments contiennent d'abord le type, puis l'élément
/dsignifie répertoire,/fsignifie fichier- Certains fichiers sont cachés et contiennent un
"." - Les fichiers d'autres répertoires ne doivent pas être affichés Corrigeons cela maintenant !
Cette activité fait partie du cours
Java intermédiaire
Instructions de l’exercice
- Utilisez
.substring(a,b)et.contains("")pour vérifier si l'élément est un fichier ou un répertoire. - Vérifiez si un fichier est caché lorsqu'il
containsun".". - Vérifiez qu'un fichier est local en vous assurant qu'il ne contient pas de
"/". - Utilisez le bon opérateur logique pour appliquer les deux conditions en même temps.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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");
}
}