Boost.Filesystem für C++: Komplette Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Boost.Filesystem für C++: Komplette Anleitung zur Dateisystem-Programmierung

Boost.Filesystem ist eine leistungsstarke und ausgereifte C++-Bibliothek, die eine portable (plattformunabhängige) Schnittstelle für Dateisystemoperationen bietet. Sie ist Teil der Boost-Bibliothekssammlung und diente als Vorlage für die Standardbibliothek <filesystem> in C++17. Wenn Sie mit C++11 oder C++14 arbeiten und ein zuverlässiges, bewährtes Werkzeug für die Arbeit mit Pfaden, Dateien und Verzeichnissen benötigen, ist Boost.Filesystem die richtige Wahl.

Warum ist sie notwendig? Standard-C++ hatte lange Zeit keine eingebauten Funktionen für einfache Aufgaben wie das Prüfen, ob eine Datei existiert, das Erstellen eines Verzeichnisses oder das rekursive Durchlaufen von Ordnern. Entwickler mussten auf Linux stat() oder auf Windows GetFileAttributes() zurückgreifen, was den Code nicht portabel machte. Boost.Filesystem löst dieses Problem, indem es eine einheitliche API bereitstellt, die auf allen gängigen Plattformen gleich funktioniert. Die Bibliothek kapselt Systemaufrufe, verarbeitet Pfadkodierungen (z. B. UTF-8 unter Linux und UTF-16 unter Windows) und bietet praktische Klassen für die Arbeit mit Pfaden und das Iterieren durch Verzeichnisse.

In diesem Artikel gehen wir detailliert auf die Installation der Bibliothek, die wichtigsten Klassen und Methoden ein und zeigen ein praktisches Beispiel, das Sie direkt in Ihren Projekten einsetzen können. Wir konzentrieren uns auf Boost Version 1.84 (aktuell zum Zeitpunkt der Erstellung), aber die Beispiele funktionieren auch mit älteren Versionen.

Installation von Boost.Filesystem

Im Gegensatz zu Sprachen mit Paketmanagern (npm, pip) erfordert C++ die Kompilierung von Bibliotheken. Boost.Filesystem ist nur teilweise eine Header-only-Bibliothek; für die Arbeit mit Dateien wird eine kompilierte Bibliothek (libboost_filesystem) benötigt.

Installation über den Paketmanager (empfohlen)

Ubuntu/Debian (Linux):

sudo apt update
sudo apt install libboost-filesystem-dev

macOS (Homebrew):

brew install boost

Windows (vcpkg):

vcpkg install boost-filesystem

Kompilieren aus dem Quellcode (falls kein Paketmanager vorhanden)

# Laden Sie Boost von der offiziellen Website herunter
wget https://boostorg.jfrog.io/artifactory/main/release/1.84.0/source/boost_1_84_0.tar.gz
tar -xzf boost_1_84_0.tar.gz
cd boost_1_84_0

# Führen Sie bootstrap aus
./bootstrap.sh

# Kompilieren Sie nur die Filesystem-Bibliothek (spart Zeit)
./b2 --with-filesystem

# Installieren Sie (normalerweise in /usr/local)
sudo ./b2 install

Kompilieren eines Projekts mit Boost.Filesystem

Beim Kompilieren müssen Sie den Pfad zu den Header-Dateien angeben und die Bibliothek linken:

g++ -std=c++11 -I/pfad/zu/boost main.cpp -lboost_filesystem -lboost_system -o mein_programm

Schnellstart: Minimales funktionsfähiges Beispiel

Schreiben wir ein einfaches Programm, das prüft, ob eine Datei existiert, und ihre Größe ausgibt.

#include <iostream>
#include <boost/filesystem.hpp>

namespace fs = boost::filesystem;

int main() {
    // Pfad zur Datei
    fs::path datei_pfad("beispiel.txt");

    // Prüfen, ob die Datei existiert
    if (fs::exists(datei_pfad)) {
        // Dateigröße abrufen
        uintmax_t datei_groesse = fs::file_size(datei_pfad);
        std::cout << "Datei: " << datei_pfad.filename() << std::endl;
        std::cout << "Größe: " << datei_groesse << " Bytes" << std::endl;
    } else {
        std::cout << "Datei nicht gefunden." << std::endl;
    }

    return 0;
}

Dieser Code zeigt drei wichtige Funktionen: das Erstellen eines Pfadobjekts (fs::path), das Prüfen, ob eine Datei existiert (fs::exists), und das Abrufen ihrer Größe

Empfehlungen