Datei größe ermitteln
-
Hi,
Wie kann ich die größe einer Datei ermitteln?
Normallerweise müsste das doch wie folgt funktionieren:
Kann einer den fehler sehen?Datei.open("Info.txt"); if ( Datei.fail() ) { system("Pause"); exit(0); } Datei.seekg(ios::beg); Datei.seekg(ios::end); D_laenge=Datei.tellg(); Datei.seekg(ios::beg); //////////////////Weitere Bearbeitung: if((D_laenge-2)<=1) { cout<<" ERROR\n"; c_Datei=new char [1]; } else { c_Datei=new char[D_laenge+1]; } cout<<"Größe: "<<sizeof(*c_Datei)<<"\n"; Datei.read(c_Datei,D_laenge); cout<<"\n\n\n\nInhalt: "; for(int i=0;i<=D_laenge;i++) { cout<<c_Datei[i]; } cout<<"ENDE \n\n\n";
-
ja, Zeile 30. sizeof ist keine funktion die zur laufzeit ausgewertet wird.
-
sizeof gibt dir die Grösse eines Datentypen zurück. In deinem Falle die von char.
-
Das ist vieleicht nur ein Problem, trozdem danke aber die länge wird auch falsch ermittelt.
In einer Datei wo folgendes drin steht:1
2
3
4
5
6Zeigt er mir nur eine Größe von 4 an. Es fehlen also zeichen
und bei der inhalt ausgabe wird nur 1 und 2 ausgegeben.
-
Matyr schrieb:
Das ist vieleicht nur ein Problem, trozdem danke aber die länge wird auch falsch ermittelt.
In einer Datei wo folgendes drin steht:1
2
3
4
5
6Zeigt er mir nur eine Größe von 4 an. Es fehlen also zeichen
und bei der inhalt ausgabe wird nur 1 und 2 ausgegeben.Du hast es eigentlich schon. Die Dateigröße kann man mit seekg+tellg ermitteln:
size_t fsize = ifstream("datei.ext").seekg(0, ios_base::end).tellg();
-
タキオン、あなた日本人ですか?
Tachyon schrieb:
タチオン
-
chinesisch???
aber egal
danke es klappt. es werden nur immer 6 zeichen zuviel angezeigt aber das ist egal. genauer gesagt zeigt er die anzahl an zeilen mehr an.
Mfg. Matyr
-
Matyr schrieb:
chinesisch???
Wäre mir neu das die Hiragana verwenden
Wenn japanisch.Je nach Codierung für die Anzahl der Zeichen (nicht aber für die Dateigröße) entscheidend.
cu André
-
diefrage schrieb:
タキオン、あなた日本人ですか?
Tachyon schrieb:
タチオン
Ne, bin ich nicht. Partikel und so?

-
size_t ist meist ein unsigned integer. mit seekg klappt das also nur bei dateien mit der größe <= UINT_MAX.
für die großen dateien kann man auf betriebssystem-spezifische funktionen zurückgreifen.
_filelengthi64, _fstati64, GetFileSize, usw.mfg
G