Package pi.util

Class FileUtil

java.lang.Object
pi.util.FileUtil

public final class FileUtil extends Object
Hilfsklasse für Datei- und Verzeichnisverwaltungsoperationen.

Diese Klasse bietet statische Methoden zum Löschen von Verzeichnissen, Suchen von Dateien nach Erweiterung oder Namen, Extrahieren von Dateinamen und Erweiterungen, Pfadverwaltung sowie Konvertierung von Dateigröße in lesbare Formate.

Die Klasse ist nicht instanziierbar und kann nur über ihre statischen Methoden verwendet werden.

Author:
Steffen Wilke, Matthias Wilke, Josef Friedrich
  • Method Details

    • deleteDir

      public static void deleteDir(File dir)
      Löscht ein Verzeichnis und seinen gesamten Inhalt rekursiv.

      Diese Methode entfernt das angegebene Verzeichnis sowie alle darin enthaltenen Dateien und Unterverzeichnisse. Der Löschvorgang erfolgt rekursiv von unten nach oben.

      Parameters:
      dir - Das zu löschende Verzeichnis.
    • deleteDir

      public static void deleteDir(String dir)
      Löscht ein Verzeichnis und seinen gesamten Inhalt rekursiv.

      Diese Methode entfernt das angegebene Verzeichnis sowie alle darin enthaltenen Dateien und Unterverzeichnisse. Der Löschvorgang erfolgt rekursiv von unten nach oben.

      Parameters:
      dir - Das zu löschende Verzeichnis als Zeichenkette.
      Since:
      0.42.0
    • findFilesByExtension

      public static List<String> findFilesByExtension(List<String> fileNames, Path dir, String extension)
      Sucht rekursiv nach Dateien mit einer bestimmten Dateiendung in einem Verzeichnis.

      Die Methode durchsucht das angegebene Verzeichnis und alle Unterverzeichnisse (außer blacklisteten Verzeichnissen) nach Dateien, die mit der angegebenen Endung übereinstimmen. Gefundene Dateien werden zur übergebenen Liste hinzugefügt.

      Parameters:
      fileNames - Die Liste, in der gefundene Dateipfade gesammelt werden. Diese Liste wird mit absoluten Pfaden ergänzt.
      dir - Das Startverzeichnis, ab dem die Suche beginnt
      extension - Die gesuchte Dateiendung (z.B. ".java", ".txt"). Der Vergleich erfolgt mit endsWith()
      Returns:
      Die übergebene fileNames Liste mit allen gefundenen Dateien. Bei Fehler beim Lesen des Verzeichnisses wird die teilweise gefüllte Liste zurückgegeben und der Fehler geloggt
      See Also:
      • isBlackListedDirectory(Path)
    • findFiles

      public static List<String> findFiles(List<String> fileNames, Path dir, String... files)
      Durchsucht rekursiv ein Verzeichnis und seine Unterverzeichnisse nach Dateien mit bestimmten Namen.
      Parameters:
      fileNames - Eine Liste, in der die gefundenen Dateipfade gespeichert werden.
      dir - Das Startverzeichnis, das durchsucht werden soll.
      files - Eine beliebige Anzahl von Dateinamen oder Dateisuffixen, nach denen gesucht werden soll.
      Returns:
      die übergebene Liste fileNames, gefüllt mit den absoluten Pfaden der gefundenen Dateien.
    • getExtension

      public static String getExtension(File file)
      Ermittelt die Dateiendung einer Datei.
      Parameters:
      file - Die Datei, deren Endung bestimmt werden soll.
      Returns:
      Die Dateiendung der angegebenen Datei.
    • getExtension

      public static String getExtension(String path)
      Extrahiert die Dateiendung aus einem gegebenen Dateipfad.
      Parameters:
      path - Der Dateipfad, aus dem die Endung extrahiert werden soll.
      Returns:
      Die Dateiendung ohne den Punkt (z.B. "txt", "java"), oder eine leere Zeichenkette, falls keine Endung vorhanden ist oder ein Fehler bei der Verarbeitung auftritt.
    • getFileName

      public static String getFileName(String path, boolean extension)
      Gibt den Dateinamen eines Pfades mit oder ohne Dateierweiterung zurück.

      Endet der Pfad mit einem Pfadtrennzeichen, so wird eine leere Zeichenkette zurückgegeben.

      Parameters:
      path - Der Dateipfad angegeben als Zeichenkette.
      extension - Ob die Dateierweiterung im Dateinamen erhalten bleiben soll oder nicht.
      Returns:
      Der Dateiname mit oder ohne Dateierweiterung je nach Eingabeparameter.
    • getFileName

      public static String getFileName(String path)
      Gibt den Dateinamen eines Pfades ohne die Dateierweiterung zurück.

      Endet der Pfad mit einem Pfadtrennzeichen, so wird eine leere Zeichenkette zurückgegeben.

      Parameters:
      path - Der Dateipfad angegeben als Zeichenkette.
      Returns:
      Der Dateiname ohne Dateierweiterung.
    • getFileName

      public static String getFileName(Path path)
      Gibt den Dateinamen eines Pfades ohne Dateierweiterung zurück.

      Endet der Pfad mit einem Pfadtrennzeichen, so wird eine leere Zeichenkette zurückgegeben.

      Parameters:
      path - Der Dateipfad.
      Returns:
      Der Dateiname ohne Dateierweiterung.
    • getFileName

      public static String getFileName(URL path)
      Gibt den Dateinamen eines Pfades ohne Dateierweiterung zurück.

      Endet der Pfad mit einem Pfadtrennzeichen, so wird eine leere Zeichenkette zurückgegeben.

      Parameters:
      path - Der Dateipfad.
      Returns:
      Der Dateiname ohne Dateierweiterung.
    • getParentDirPath

      public static String getParentDirPath(String uri)
      Gibt den Pfad des übergeordneten Verzeichnisses für den angegebenen URI oder Dateipfad zurück.

      Die Methode versucht zunächst, den Input als URI zu interpretieren. Falls dies fehlschlägt, wird der Input als Dateipfad behandelt.

      Parameters:
      uri - Der URI oder Dateipfad, dessen übergeordnetes Verzeichnis bestimmt werden soll.
      Returns:
      Der Pfad des übergeordneten Verzeichnisses mit nachgestelltem Dateitrenner, oder der ursprüngliche Input, falls dieser null oder leer ist.
      Throws:
      NullPointerException - wenn das übergeordnete Verzeichnis null ist
    • getParentDirPath

      public static String getParentDirPath(URI uri)
      Gibt den Pfad des übergeordneten Verzeichnisses einer URI zurück.

      Wenn der Pfad der URI mit einem Datei-Trennzeichen endet, wird das übergeordnete Verzeichnis durch Auflösen von ".." ermittelt. Ansonsten wird das aktuelle Verzeichnis durch Auflösen von "." verwendet.

      Parameters:
      uri - Die URI, deren übergeordnetes Verzeichnis ermittelt werden soll.
      Returns:
      Der Pfad des übergeordneten Verzeichnisses als Zeichenkette.
    • combine

      public static String combine(String basePath, String... paths)
      Diese Methode kombiniert den angegebenen Pfad mit den als Argumente übergebenen Pfadsegmenten.

      Der zurückgegebene Pfad verwendet das Pfadtrennzeichen des aktuellen Systems. Diese Methode normalisiert Windows-Pfadtrennzeichen zu Unix-Trennzeichen.

      Parameters:
      basePath - der Basispfad, der als Ausgangspunkt dient (nicht null)
      paths - variable Anzahl von Pfadkomponenten, die kombiniert werden sollen. Null-Werte werden ignoriert.
      Returns:
      der kombinierte Pfad als String. Bei Auftreten einer URISyntaxException wird der Basispfad zurückgegeben.
    • humanReadableByteCount

      public static String humanReadableByteCount(long bytes)
      Wandelt eine Anzahl von Bytes in eine menschenlesbare Darstellung um.
      Parameters:
      bytes - die Anzahl der Bytes, die formatiert werden sollen
      Returns:
      eine menschenlesbare String-Darstellung der Bytegröße (z.B. "1.5 KB", "2.3 MB")
    • humanReadableByteCount

      public static String humanReadableByteCount(long bytes, boolean decimal)
      Konvertiert eine Byte-Anzahl in eine menschenlesbare Darstellung mit entsprechenden Einheiten.
      Parameters:
      bytes - Die Anzahl der Bytes, die formatiert werden sollen
      decimal - Wenn true, werden Dezimalpräfixe (1000er-Basis) verwendet (KB, MB, GB, etc.), wenn false, werden Binärpräfixe (1024er-Basis) verwendet (KiB, MiB, GiB, etc.)
      Returns:
      Eine formatierte Zeichenkette mit der Byte-Anzahl und der entsprechenden Einheit. Beispiele: "1.5 KB", "2.3 GiB", "512 bytes"
    • normalizePath

      public static String normalizePath(String path)
      Ersetzt im gegebenen Dateipfad alle Schrägstriche (Slashes) und Gegenschrägstriche (Backslashes) mit dem Zeichen des Attributs File.separator.
      Parameters:
      path - Ein Dateipfad, der Schrägstriche oder Gegenschrägstriche enthalten kann.
      Returns:
      Der normalisierte Dateipfad.
    • exists

      public static boolean exists(String filePath)
      Überprüft, ob eine Datei am angegebenen Dateipfad existiert.
      Parameters:
      filePath - Der Pfad zur zu überprüfenden Datei.
      Returns:
      true, wenn die Datei existiert; false, wenn die Datei nicht existiert oder ein Fehler beim Laden der Resource aufgetreten ist
    • getHomeDir

      public static String getHomeDir()
      Gibt das Heimverzeichnis des aktuellen Benutzers zurück.
      Returns:
      Das Heimverzeichnis des aktuellen Benutzers als Zeichenkette
    • getTmpDir

      public static String getTmpDir()
      Gibt den Pfad zum temporären Verzeichnis des Systems zurück.
      Returns:
      Der absolute Pfad zum temporären Verzeichnis als Zeichenkette.
      Since:
      0.42.0
    • createTmpFile

      public static String createTmpFile()
      Erstellt eine temporäre Datei im Standard-Temporärverzeichnis des Systems.
      Returns:
      Der absolute Pfad zur erstellten temporären Datei als String, zum Beispiel "/tmp/5601360254473891177.tmp"
      Throws:
      RuntimeException - wenn ein IOException beim Erstellen der Datei auftritt
    • getPicturesDir

      public static String getPicturesDir()
      Ermittelt den Pfad zum Bilderordner des Benutzers.

      Überprüft zunächst, ob ein „Pictures“ oder „Bilder“ Ordner im Benutzerverzeichnis existiert. Falls keiner der beiden Ordner existiert, wird automatisch ein „Pictures“ Ordner erstellt.

      Returns:
      Der absolute Pfad zum Bilderordner des Benutzers
      Since:
      0.42.0
    • getVideosDir

      public static String getVideosDir()
      Ermittelt das Verzeichnis für Videos im Home-Verzeichnis des Benutzers.

      Diese Methode überprüft, ob ein "Videos"-Ordner im Home-Verzeichnis existiert. Falls das Verzeichnis nicht vorhanden ist, wird es automatisch erstellt.

      Returns:
      Der absolute Pfad zum Videos-Verzeichnis als Zeichenkette.
      Since:
      0.42.0
    • createDir

      public static void createDir(String dirpath)
      Erstellt ein Verzeichnis unter dem angegebenen Pfad, falls dieses noch nicht existiert.

      Wenn das Verzeichnis bereits vorhanden ist, wird keine Aktion ausgeführt.

      Parameters:
      dirpath - Der Pfad des zu erstellenden Verzeichnisses als Zeichenkette.