C++: If exist?
lima-city → Forum → Programmiersprachen → C/C++ und D
angabe
anhand
antwort
beispiel
berechtigung
best
bestimmte datei
compiler
datei
error
fehler
lese
lesezugriff
main
meinst
recht
schaue mal
standard
window
zugreifen
-
Ich hab jetzt schon l?nger kein Programm in C++ mehr geschrieben, von daher im voraus sorry, wenn ich irgendwas simples vergessen habe sollte
Wei? jemand, wie ich in einem Ansi C++ Programm pr?fen kann, ob eine
bestimmte Datei (von der man den genauen Pfad kennt) existiert? Und wenn
sie existiert, br?uchte ich "true" als Best?tigung. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Meinst du vielleicht sowas hier?
Also du suchst nach einer Datei, und wenn diese existiert, (oder wenn der Pfad richtig ist) soll eine postive antwort kommen?
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream inp;
ofstream out;
string myFileName;
myFileName = "mydata.txt";
inp.open(myFileName.c_str(), ifstream::in);
inp.close();
if(inp.fail())
{
inp.clear(ios::failbit);
cout << "Writing to file..." << myFileName.c_str() << endl;
out.open(myFileName.c_str(), ofstream::out);
out << "Hallo Welt" << endl;
out.close();
}
else
{
cout << "Error...file """ << myFileName.c_str() << """ exists" << endl;
}
return 0;
}
===========================================
oder vielleicht so:
void main()
{
if( open("somefile.txt", O_CREAT + O_EXCL) == -1)
printf("Datei existiert");
else
printf("Datei existiert nicht");
}
Ich denke eher, das 2 Beispiel ist was du suchst. Musst du halt sagen :)!
Ich hoffe, ich habe keinen M?ll hingeschrieben
-
"O_CREAT + O_EXCL) == -1"
Was bewirkt das hier? Ist der letzte code auch auf C++ ?bertragbar? (ausgenommen printf nat?rlich) -
O_CREAT: Datei erzeugen, falls nicht vorhanden;
O_EXCL: In Verbindung mit O_CREAT: Fehler zur?ckgeben, falls Datei bereits existiert. -
Nee, sowas meinte er nicht. Aber er hat auch nicht gesagt, f?r welches Betriebssystem bzw. welchen Compiler er das haben will.
Die meisten Compiler unterst?tzen unter vielen Betriebssystemen die Funktion access() (bzw. _access()), was aber nicht zum ANSI C Standard geh?rt.
Unter ISO C++ gibt es nichts vergleichbares. Da m?sstest du halt versuchen die Datei zu ?ffnen und kannst nur anhand des Fehlercodes sehen, bo die Datei ?berhaupt vorhanden ist oder warum du keinen Zugriff dazu hast (ungen?gende Rechte z.B.). -
Wenn du als Compiler f?r Dev-C++ gcc benutzt, dann sollte access() funktionieren. Probiers mal aus. Sonst poste nochmal mit der Angabe, welcher Compiler bei dir in der von dir angegebenen IDE :-p eingetragen ist.
-
Jaja, ^^ ich benutze eben den Compiler, der standardm??ig bei Dev-C++ v4 dabei ist.
-
Also die GCC-Suite... Probier es doch mal aus mit access() und poste auch mal, ob es funktioniert hat.
-
Naja, ich muss erstmal raussuchen wie man access() anwendet, und hoffe dass es dann klappt.
/Edit: ich finde nichts zu access()
soll das ungef?hr so ablaufen:
bool temp;
temp = access("C:\\bla.txt");
? -
Frag doch einfach... *g*
int access(const char * pfad_und_dateiname, int abfragemodus);
"pfad_und_dateiname" ist ja klar.
"abfragemodus": 4 m?gliche Werte
0 = Existiert die Datei ?berhaupt?
2 = Habe ich Schreibzugriff?
4 = Habe ich Lesezugriff?
6 = Habe ich Lese- und Schreibzugriff?
Der R?ckgabewert ist 0, wenn die Abfrage erfolgreich war (Datei existiert bzw. Berechtigung vorhanden). Ansonsten ist der R?ckgabewert -1. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage