Boost.Filesystem pour C++ : Guide complet de gestion du système de fichiers
Boost.Filesystem est une bibliothèque C++ puissante et mature qui offre une interface portable (multiplateforme) pour effectuer des opérations sur le système de fichiers. Faisant partie de la collection de bibliothèques Boost, elle a en fait servi de prototype à la bibliothèque standard <filesystem> du C++17. Si vous travaillez avec C++11 ou C++14 et avez besoin d'un outil fiable et éprouvé pour manipuler les chemins, fichiers et répertoires, Boost.Filesystem est le choix idéal.
Pourquoi est-elle nécessaire ? Le C++ standard a longtemps manqué de moyens intégrés pour des tâches simples comme vérifier l'existence d'un fichier, créer un répertoire ou parcourir récursivement des dossiers. Les développeurs devaient utiliser stat() sous Linux ou GetFileAttributes() sous Windows, rendant le code non portable. Boost.Filesystem résout ce problème en fournissant une API unifiée qui fonctionne de la même manière sur toutes les plateformes principales. La bibliothèque encapsule les appels système, gère les encodages de chemins (par exemple, UTF-8 sous Linux et UTF-16 sous Windows) et propose des classes pratiques pour manipuler les chemins et itérer sur les répertoires.
Dans cet article, nous allons détailler l'installation de la bibliothèque, les classes et méthodes essentielles, et présenter un exemple pratique concret que vous pourrez utiliser dans vos projets. Nous nous concentrerons sur la version Boost 1.84 (actuelle au moment de la rédaction), mais les exemples fonctionneront également avec des versions plus anciennes.
Installation de Boost.Filesystem
Contrairement aux langages dotés de gestionnaires de paquets (npm, pip), le C++ nécessite la compilation des bibliothèques. Boost.Filesystem n'est pas une bibliothèque "header-only" pour toutes ses parties ; pour travailler avec les fichiers, une bibliothèque compilée (libboost_filesystem) est requise.
Installation via un gestionnaire de paquets (recommandé)
Ubuntu/Debian (Linux) :
sudo apt update
sudo apt install libboost-filesystem-dev
macOS (Homebrew) :
brew install boost
Windows (vcpkg) :
vcpkg install boost-filesystem
Compilation depuis les sources (si pas de gestionnaire de paquets)
# Téléchargez Boost depuis le site officiel
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
# Lancez bootstrap
./bootstrap.sh
# Compilez uniquement la bibliothèque filesystem (gagne du temps)
./b2 --with-filesystem
# Installez (généralement dans /usr/local)
sudo ./b2 install
Compilation d'un projet avec Boost.Filesystem
Lors de la compilation, vous devez spécifier le chemin vers les fichiers d'en-tête et lier la bibliothèque :
g++ -std=c++11 -I/chemin/vers/boost main.cpp -lboost_filesystem -lboost_system -o mon_programme
Démarrage rapide : exemple minimal fonctionnel
Écrivons un programme simple qui vérifie si un fichier existe et affiche sa taille.
#include <iostream>
#include <boost/filesystem.hpp>
namespace fs = boost::filesystem;
int main() {
// Chemin vers le fichier
fs::path chemin_fichier("exemple.txt");
// Vérifie si le fichier existe
if (fs::exists(chemin_fichier)) {
// Obtient la taille du fichier
uintmax_t taille_fichier = fs::file_size(chemin_fichier);
std::cout << "Fichier : " << chemin_fichier.filename() << std::endl;
std::cout << "Taille : " << taille_fichier << " octets" << std::endl;
} else {
std::cout << "Fichier introuvable." << std::endl;
}
return 0;
}
Ce code illustre trois fonctionnalités clés : la création d'un objet chemin (fs::path), la vérification de l'existence d'un fichier (fs::exists) et l'obtention de sa taille.
Aussi dans la bibliothèque
Sérialisation d'objets en TypeScript : Guide complet
Biometric Kotlin : guide complet avec exemples pratiques
Jetons JWT en TypeScript : guide complet pour travailler avec les JSON Web Tokens
Framework CLI pour Swift : création d'utilitaires console sur iOS/macOS