Obtenir la taille du fichier en C++
-
Utilisez la fonction
std::filesystem::file_size
pour obtenir la taille des fichiers en C++ -
Utilisez
std::filesystem::file_size
avecstd::filesystem::path
pour obtenir la taille du fichier en C++ -
Utilisez
std::filesystem::file_size
avecerror_code
pour obtenir la taille du fichier en C++ -
Utiliser la fonction
stat
pour obtenir la taille du fichier en C++
Cet article présentera plusieurs méthodes pour obtenir la taille des fichiers en C++.
Utilisez la fonction std::filesystem::file_size
pour obtenir la taille des fichiers en C++
std::filesystem::file_size
est la fonction de la bibliothèque du système de fichiers C++ qui récupère la taille du fichier en octets. La fonction std::filesystem::file_size
prend le chemin du fichier comme argument de la fonction, qui est de type std::filesystem::path
. Dans l’exemple suivant, cependant, nous passons la valeur string
du chemin du fichier, qui est ensuite utilisée pour construire l’objet correspondant et récupérer la taille du fichier.
#include <filesystem>
#include <fstream>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::ifstream;
int main() {
string path = "input.txt";
cout << "size of file '" << path << "' = " << std::filesystem::file_size(path)
<< endl;
return EXIT_SUCCESS;
}
Production :
size of file 'inbox.txt' = 10440
Utilisez std::filesystem::file_size
avec std::filesystem::path
pour obtenir la taille du fichier en C++
Une autre utilisation de la fonction std::filesystem::file_size
consiste à insérer la valeur du chemin d’accès au fichier comme variable de type path
. Au début, vous devez inclure l’instruction using std::filesystem::path
avant d’utiliser le type. Ensuite, nous pouvons déclarer l’objet path
, comme montré dans l’exemple de code suivant, et l’initialiser avec une chaîne de caractères littérale. La variable construite est passée à la fonction file_size
pour obtenir la taille du fichier.
#include <fcntl.h>
#include <sys/stat.h>
#include <unistd.h>
#include <filesystem>
#include <fstream>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::error_code;
using std::ifstream;
using std::string;
using std::filesystem::path;
int main() {
class path fd_path = "input.txt";
cout << "size of file '" << fd_path
<< "' = " << std::filesystem::file_size(fd_path) << endl;
return EXIT_SUCCESS;
}
Production :
size of file 'inbox.txt' = 10440
Utilisez std::filesystem::file_size
avec error_code
pour obtenir la taille du fichier en C++
Puisque std::filesystem::file_size
utilise les services sous-jacents du système d’exploitation pour récupérer la taille du fichier, il y a de bonnes chances que cela échoue, ce qui soulève quelques exceptions. Pour mieux gérer chaque appel de fonction file_size
, il est recommandé d’utiliser l’objet error_code
comme second argument et de stocker le message d’erreur en cas d’échec. Par conséquent, nous pouvons évaluer l’objet error_code
et implémenter le code de gestion des erreurs en utilisant les instructions if...else
.
#include <filesystem>
#include <fstream>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::error_code;
using std::ifstream;
using std::string;
using std::filesystem::path;
int main() {
string path = "input.txt";
error_code ec{};
auto size = std::filesystem::file_size(path, ec);
if (ec == error_code{})
cout << "size of file '" << path << "' = " << size << endl;
else
cout << "Error accessing file '" << path << "' message: " << ec.message()
<< endl;
return EXIT_SUCCESS;
}
Production :
size of file 'inbox.txt' = 10440
Utiliser la fonction stat
pour obtenir la taille du fichier en C++
La fonction POSIX est disponible sur plusieurs systèmes d’exploitation. C’est souvent la fonction que la méthode std::filesystem::file_size
sous le capot. La fonction stat
prend une chaîne de caractères comme premier argument pour indiquer le chemin de l’adresse du fichier de l’objet de type struct stat
comme deuxième argument.
La struct stat
est un objet spécial prédéfini qui stocke plusieurs paramètres de fichier après l’appel réussi de la fonction stat
. Notez que nous avons seulement besoin d’accéder au membre de données st_size
de l’objet struct stat
, qui stocke la taille du fichier en nombre d’octets.
#include <fcntl.h>
#include <sys/stat.h>
#include <unistd.h>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::ifstream;
using std::string;
int main() {
string path = "input.txt";
struct stat sb {};
if (!stat(path.c_str(), &sb)) {
cout << "size of file '" << path << "' = " << sb.st_size << endl;
} else {
perror("stat");
}
return EXIT_SUCCESS;
}
Production :
size of file 'inbox.txt' = 10440
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook