Obtener el tamaño del archivo en C++
-
Usar la función
std::filesystem::file_size
para obtener el tamaño del archivo en C++ -
Usa
std::filesystem::file_size
constd::filesystem::path
para obtener el tamaño del archivo en C++ -
Usa
std::filesystem::file_size
conerror_code
para obtener el tamaño del fichero en C++ -
Usar la función
stat
para obtener el tamaño del archivo en C++
Este artículo demostrará múltiples métodos de cómo obtener el tamaño del archivo en C++.
Usar la función std::filesystem::file_size
para obtener el tamaño del archivo en C++
std::filesystem::file_size
es la función de la biblioteca del sistema de ficheros C++ que recupera el tamaño del fichero en bytes. std::filesystem::file_size
toma la ruta del fichero como argumento de la función, que es de tipo std::filesystem::path
. En el siguiente ejemplo, sin embargo, pasamos el valor string
de la ruta del archivo, que luego se utiliza para construir el objeto correspondiente y recuperar el tamaño del archivo.
#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;
}
Producción :
size of file 'inbox.txt' = 10440
Usa std::filesystem::file_size
con std::filesystem::path
para obtener el tamaño del archivo en C++
El uso alternativo de la función std::filesystem::file_size
es insertar el valor de la ruta de archivo como la variable de tipo path
. Al principio, necesitarías incluir la declaración using std::filesystem::path
antes de usar el tipo. A continuación, podemos declarar el objeto path
, como se muestra en el siguiente código de ejemplo, e inicializarlo con un literal de cadena. La variable construida se pasa a la función file_size
para obtener el tamaño del archivo.
#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;
}
Producción :
size of file 'inbox.txt' = 10440
Usa std::filesystem::file_size
con error_code
para obtener el tamaño del fichero en C++
Dado que std::filesystem::file_size
utiliza los servicios subyacentes del sistema operativo para recuperar el tamaño del archivo, hay buenas posibilidades de que falle, lo que plantea alguna excepción. Para manejar mejor cada llamada a la función file_size
, se recomienda usar el objeto error_code
como segundo argumento y almacenar el mensaje de error en caso de fallo. En consecuencia, podemos evaluar el objeto error_code
e implementar el código de manejo de errores usando declaraciones 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;
}
Producción :
size of file 'inbox.txt' = 10440
Usar la función stat
para obtener el tamaño del archivo en C++
stat
es la función compatible con POSIX que está disponible en múltiples sistemas operativos. A menudo es la función que el método std::filesystem::file_size
debajo del capó. stat
toma la cadena de caracteres como primer argumento para denotar la ruta de la dirección del archivo de tipo struct stat
como segundo argumento.
struct stat
es un objeto predefinido especial que almacena múltiples parámetros de archivo después de la llamada exitosa a la función stat
. Observe que sólo necesitamos acceder al miembro de datos st_size
del objeto struct stat
, que almacena el tamaño del archivo como un número de bytes.
#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;
}
Producción :
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