java.lang.Object
it.unimi.di.prog2.temisvolti.filesystem.Path
All Implemented Interfaces:
Iterable<String>

public class Path extends Object implements Iterable<String>
Classe immutabile che rappresenta un path.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final Path
    Costante corrispondente al path vuoto (path relativo, senza parti)
    private final boolean
    Indica se il path è assouto.
    private final List<String>
    Contiene le componenti del path.
    static final Path
    Costante corrispondente al path radice (path assoluto, senza parti)
    static final String
    Carattere separatore delle parti di un percorso
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    private
    Path(boolean isAbsolute, List<String> parts)
    Costruisce un path a partire da un elenco di stringhe e dall'informazione se sia assoluto o meno.
  • Method Summary

    Modifier and Type
    Method
    Description
    static Path
    Metodo di fabbricazione che restituisce un path a partire da una stringa.
    boolean
    Consente di sapere se il path è assoluto.
     
    Restituisce l'ultima componente di questo path.
    Restituisce il prefisso di questo path a meno dell'ultima componente (o quello vuoto, se questo è vuoto).
    Costruisce un path relativo tra questo e quello dato.
    resolve(Path other)
    Risolve il path dato rispetto a questo.
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface java.lang.Iterable

    forEach, spliterator
  • Field Details

    • SEPARATOR

      public static final String SEPARATOR
      Carattere separatore delle parti di un percorso
      See Also:
    • ROOT

      public static final Path ROOT
      Costante corrispondente al path radice (path assoluto, senza parti)
    • EMPTY

      public static final Path EMPTY
      Costante corrispondente al path vuoto (path relativo, senza parti)
    • isAbsolute

      private final boolean isAbsolute
      Indica se il path è assouto.
    • parts

      private final List<String> parts
      Contiene le componenti del path.
  • Constructor Details

    • Path

      private Path(boolean isAbsolute, List<String> parts)
      Costruisce un path a partire da un elenco di stringhe e dall'informazione se sia assoluto o meno.
      Parameters:
      isAbsolute - indica se il path è assoluto.
      parts - elenco di stringhe che costiuiscono le parti del percorso.
      Throws:
      NullPointerException - se le parts è o contiene null.
      InvalidPathException - se una della parti è vuota, o contiene il separatore.
  • Method Details

    • fromString

      public static Path fromString(String path)
      Metodo di fabbricazione che restituisce un path a partire da una stringa.

      Alcuni esempi di percorso sono:

      • ":A:B:C", percorso assoluto con parti A, B e C,
      • "B:C", percorso relativo con parti A, B e C,
      • ":", percorso assoluto corrispondente alla radice del filesystem,
      • "", percorso vuoto (relativo).
      Parameters:
      path - la stringa che corrisponde alla rappresentazione testuale del path.
      Returns:
      il path corrispondente alla stringa.
      Throws:
      NullPointerException - se path è null
      InvalidPathException - se nella stringa compaiono due separatori immediatamente consecutivi.
    • isAbsolute

      public boolean isAbsolute()
      Consente di sapere se il path è assoluto.
      Returns:
      true sse il path è assoluto.
    • parent

      public Path parent()
      Restituisce il prefisso di questo path a meno dell'ultima componente (o quello vuoto, se questo è vuoto).
      Returns:
      un path corrispondente a questo, ma privato dell'ultima componente (se presente).
    • name

      public String name()
      Restituisce l'ultima componente di questo path.
      Returns:
      l'ultima componente di questo path, o null se il path è vuoto.
    • resolve

      public Path resolve(Path other)
      Risolve il path dato rispetto a questo.

      Se il path dato come parametro è assoluto esso viene banalmente restituito, se è vuoto, viene invece restituito questo path. In ogni altro caso, questo path viene considearato una directory alla quale sono aggiunte le parti de path passato come argomento (che è relativo); il risultato è assoluto sse lo è questo path.

      Per esempio, se questo path è :A:B e il parametro è C:D la risoluzione è :A:B:C:D.

      Parameters:
      other - il percorso da risolvere.
      Returns:
      il percorso risolto.
    • relativize

      public Path relativize(Path other)
      Costruisce un path relativo tra questo e quello dato.

      La relativizzazione è l'inverso di resolve(Path), restituisce un path che identifica lo stesso file se risolto rispetto a questo.

      Per esempio, se questo path è :A:B e il parametro è :A:B:C:D la relativizzazione è C:D.

      Parameters:
      other - l'altro path.
      Returns:
      il path relativizzato.
      Throws:
      IllegalArgumentException - se questo path non è assoluto, ma lo è l'argomento, o se l'elenco di parti di quest questo path non è (come lista) prefisso di quelle dell'argomento.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • iterator

      public Iterator<String> iterator()
      Specified by:
      iterator in interface Iterable<String>