CommencezCommencez gratuitement

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
  • /d signifie répertoire,
  • /f signifie 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

Voir le cours

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 contains un ".".
  • 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");
  }
}
Modifier et exécuter le code