Ottieni la dimensione del file in C++
-
Usa la funzione
std::filesystem::file_size
per ottenere la dimensione del file in C++ -
Usa
std::filesystem::file_size
constd::filesystem::path
per ottenere la dimensione del file in C++ -
Usa
std::filesystem::file_size
conerror_code
per ottenere la dimensione del file in C++ -
Usa la funzione
stat
per ottenere la dimensione del file in C++
Questo articolo illustrerà diversi metodi su come ottenere la dimensione del file in C++.
Usa la funzione std::filesystem::file_size
per ottenere la dimensione del file in C++
std::filesystem::file_size
è la funzione di libreria del filesystem C++ che recupera la dimensione del file in byte. std::filesystem::file_size
prende il percorso del file come argomento della funzione, che è di tipo std::filesystem::path
. Nell’esempio seguente, tuttavia, passiamo il valore string
del percorso del file, che viene quindi utilizzato per costruire l’oggetto corrispondente e recuperare la dimensione del file.
#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;
}
Produzione:
size of file 'inbox.txt' = 10440
Usa std::filesystem::file_size
con std::filesystem::path
per ottenere la dimensione del file in C++
L’uso alternativo della funzione std::filesystem::file_size
consiste nell’inserire il valore del percorso del file come variabile di tipo path
. All’inizio, dovresti includere l’istruzione using std::filesystem::path
prima di usare il tipo. Successivamente, possiamo dichiarare l’oggetto path
, come mostrato nel seguente codice di esempio, e inizializzarlo con una stringa letterale. La variabile costruita viene passata alla funzione file_size
per ottenere la dimensione del file.
#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;
}
Produzione:
size of file 'inbox.txt' = 10440
Usa std::filesystem::file_size
con error_code
per ottenere la dimensione del file in C++
Poiché std::filesystem::file_size
utilizza i servizi del sistema operativo sottostante per recuperare la dimensione del file, ci sono buone probabilità che possa fallire, sollevando qualche eccezione. Per gestire meglio ogni chiamata di funzione file_size
, si consiglia di utilizzare l’oggetto error_code
come secondo argomento e memorizzare il messaggio di errore in caso di errore. Di conseguenza, possiamo valutare l’oggetto error_code
e implementare il codice di gestione degli errori utilizzando le istruzioni 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;
}
Produzione:
size of file 'inbox.txt' = 10440
Usa la funzione stat
per ottenere la dimensione del file in C++
stat
è la funzione conforme a POSIX disponibile su più sistemi operativi. Spesso è la funzione che il metodo std::filesystem::file_size
sotto il cofano. stat
prende una stringa di caratteri come primo argomento per indicare il percorso dell’indirizzo del file dell’oggetto di tipo struct stat
come secondo argomento.
struct stat
è uno speciale oggetto predefinito che memorizza più parametri di file dopo la chiamata alla funzione stat
riuscita. Nota che abbiamo solo bisogno di accedere al membro dati st_size
dell’oggetto struct stat
, che memorizza la dimensione del file come un numero di byte.
#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;
}
Produzione:
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