ComenzarEmpieza gratis

Encontrar archivos locales

Quieres escribir un pequeño programa que imprima sólo los archivos locales de un directorio determinado. Has podido recuperar la lista de elementos del directorio, almacenada en DIRECTORY_CONTENT, pero :

  • Todos los elementos contienen primero el tipo y luego el elemento

  • /d significa directorio,

  • /f significa archivo

  • Algunos archivos están ocultos y contienen un "."

  • Los archivos de otros directores no deben imprimirse ¡Arreglémoslos ya!

Este ejercicio forma parte del curso

Java intermedio

Ver curso

Instrucciones de ejercicio

  • Utiliza .substring(a,b) y .contains("") para comprobar si el elemento es un archivo o un directorio.
  • Comprueba si un archivo está oculto cuando containsa ".".
  • Comprueba que un archivo es local asegurándote de que no contiene un "/".
  • Utiliza el operador lógico correcto para utilizar ambas condiciones a la vez.

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

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");
  }
}
Editar y ejecutar código