Namensräume
Varianten
Aktionen

std::experimental::filesystem::file_size

Von cppreference.com
< cpp‎ | experimental‎ | fs
 
 
 
 
Definiert im Header <experimental/filesystem>
std::uintmax_t file_size( const path& p );
std::uintmax_t file_size( const path& p, error_code& ec );
(1) (Dateisystem-TS)

Gibt die Größe der regulären Datei p zurück, bestimmt, als ob der Member st_size der Struktur aus dem POSIX stat gelesen würde (symlinks werden gefolgt).

Der Versuch, die Größe eines Verzeichnisses (sowie jeder anderen Datei, die keine reguläre Datei oder ein Symlink ist) zu ermitteln, wird als Fehler behandelt.

Die nicht werfende Überladung gibt im Fehlerfall -1 zurück.

Inhalt

[edit] Parameter

p - Zu untersuchender Pfad
ec - Ausgabeparameter für die Fehlerberichterstattung in der nicht auslösenden Überladung

[edit] Rückgabewert

Die Größe der Datei in Bytes.

[edit] Ausnahmen

Die Überladung, die keinen Parameter error_code& verwendet, wirft filesystem_error bei zugrundeliegenden Betriebssystem-API-Fehlern, konstruiert mit p als erstem Argument und dem Betriebssystem-Fehlercode als Fehlercode-Argument. std::bad_alloc kann geworfen werden, wenn die Speicherbelegung fehlschlägt. Die Überladung, die einen Parameter error_code& verwendet, setzt diesen auf den Betriebssystem-API-Fehlercode, wenn ein Betriebssystem-API-Aufruf fehlschlägt, und führt ec.clear() aus, wenn keine Fehler auftreten. Diese Überladung hat
noexcept-Spezifikation:  
noexcept
  

[edit] Beispiel

#include <experimental/filesystem>
#include <fstream>
#include <iostream>
namespace fs = std::experimental::filesystem;
 
int main()
{
    fs::path p = fs::current_path() / "example.bin";
    std::ofstream(p).put('a'); // create file of size 1
    std::cout << "File size = " << fs::file_size(p) << '\n';
    fs::remove(p);
 
    try
    {
        fs::file_size("/dev"); // attempt to get size of a directory
    }
    catch (fs::filesystem_error& e)
    {
        std::cout << e.what() << '\n';
    }        
}

Mögliche Ausgabe

File size = 1
filesystem error: cannot get file size: Is a directory [/dev]

[edit] Siehe auch

ändert die Größe einer regulären Datei durch Abschneiden oder Auffüllen mit Nullen
(Funktion) [bearbeiten]
ermittelt den verfügbaren freien Speicherplatz auf dem Dateisystem
(Funktion) [bearbeiten]