Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Testen ob Texdatei schon vorhanden ist

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
26.08.2005, 13:19 Uhr
Kleine



Hallo!

Habe folgendes Problem:
Ich möchte zu Beginn meines Programms testen, ob die Textdatei "./Test.txt" schon existiert, oder ob ich eine solche neu anlegen muss.

Wie kann das nun testen? (C++) Das Anlegen der Textdatei klappt, jedoch der Test vorher nicht.

Gruß
Kleine
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.08.2005, 14:12 Uhr
virtual
Sexiest Bit alive
(Operator)


access
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.08.2005, 14:51 Uhr
imhotep
followed the white rabbit


Oder versuchen auf die Datei lesezugriff zu bekommen. Wenn man dann einen Fehler/Nullpointer gibt, existiert die Datei nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.08.2005, 14:55 Uhr
Skippy



ja oder die datei ist einfach schon geöffnet

besser ist sowas hier


C++:
int does_file_exist(const char *filename)
{
    struct stat st;
    if(stat(filename, &st) || isDirectory(filename)) return FALSE;
    return TRUE;
}



dies ist für windows unter linux soll das auch geben könnt aber sein das syntax ein wenig anders ist musstde mal schauen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.08.2005, 15:24 Uhr
typecast
aka loddab
(Operator)


access und stat sind POSIX, werden also von Linux auch unterstuetzt. Beides ist aber kein ANSI!

isDirectory gibt es aber nicht. Dafuer muss man unter Linux das Makro IS_DIR benutzen.


C++:
int does_file_exist(const char *filename)
{
    struct stat st;
    if(stat(filename, &st) || S_ISDIR(st.st_mode)) return FALSE;
    return TRUE;
}


--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
26.08.2005, 15:49 Uhr
virtual
Sexiest Bit alive
(Operator)


Sowohl die Lösung mit stat alsauch mit fopen oder streams haben aber auch den Nachteil, daß sie die Aufgabe nicht zuverlässig lösen: was ist denn, wenn man einfach keine entsprechenden Zugriffsrechte hat? - In beiden Fällen würde einfach zurückgegeben, daß die Datei nicht existiert. Man kann sich vielleicht noch damit behelfen, daß man errno abfragt. Aber dann wird der Code schon wieder deutlich komplizierter und es zeigt sich, daß man nicht einfach irgendwelche Hacks probieren sollte, wenn man mit access eigentlich eine Funktion hat, welche dafür genau für die Aufgabe gedacht ist.

Natürlich hat typecast recht, wenn er sagt, daß access kein ANSI Standard ist.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
26.08.2005, 19:36 Uhr
Skippy



@typecast sorry mein fehler bei mir ist die funktion ob es ein direktory ist habe ich extra ausgeklammert da ich die auch einzeln brauch hab den code faul wie ich bin einfach aus dem quellcode kopiert

@virtual dir muss ich wiedersprechen mit stat kann man auf dateien zugreifen obwohl man keine rechte hat habe das bei mir eben noch schnell probiert und es klappt

habe bei mir dateien bei denen ich keine rechte im normalen windows habe (kann sie selbst admin nicht löschen wegen fehlender rechte) und kann mit stat zugreifen und die infos abfragen er sagt mir halt datei existiert sie ist kein direktory usw. also scheints ja dann wohl zu funktionieren würde ja sonst auch kein sinn machen das man eigentümer und gruppe abfragen kann wenn man nur auf dateien zugreifen kann die einem gehören

Dieser Post wurde am 26.08.2005 um 19:36 Uhr von Skippy editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
26.08.2005, 19:50 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von Skippy:
@typecast sorry mein fehler bei mir ist die funktion ob es ein direktory ist habe ich extra ausgeklammert da ich die auch einzeln brauch hab den code faul wie ich bin einfach aus dem quellcode kopiert

@virtual dir muss ich wiedersprechen mit stat kann man auf dateien zugreifen obwohl man keine rechte hat habe das bei mir eben noch schnell probiert und es klappt

habe bei mir dateien bei denen ich keine rechte im normalen windows habe (kann sie selbst admin nicht löschen wegen fehlender rechte) und kann mit stat zugreifen und die infos abfragen er sagt mir halt datei existiert sie ist kein direktory usw. also scheints ja dann wohl zu funktionieren würde ja sonst auch kein sinn machen das man eigentümer und gruppe abfragen kann wenn man nur auf dateien zugreifen kann die einem gehören


dann probier das mal mit keinen leserechten auf dem ordner (und den files natürlich) dann kommt entweder noaccess oder eben nix zurück (ansonsten würde ich windows nun echt aufn müll haun )
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
26.08.2005, 21:37 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat von Skippy:

@virtual dir muss ich wiedersprechen mit stat kann man auf dateien zugreifen obwohl man keine rechte hat habe das bei mir eben noch schnell probiert und es klappt


Akzeptiert, hast Recht: access und stat verhalten sich an dieser Stelle sogar identisch. Dh wenn dich noch weitere Informationen interessieren an der Datei ist stat zu empfehlen, bei blosser Abfrage der Existenz wohl eher access.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
26.08.2005, 23:37 Uhr
Skippy



@flosoft hau windows auf den müll stat gibt ja nur informationen vom dateisystem selbst zurück und unter windows prinzipiell kannst du dateien für die du keine rechte hast trotzdem sehen und infos wie last access datum und die größe anschauen
und wenn man mit stat seine lese und schreibrechte anschaut dann sagt er ja auch da ich keine hab


@virtual hab zu access noch ein paar fragen erstens wozu gehört das (zufällig auch winapi?)

und wenns zufällig parat hast wo es ein paar detalierte infos gibt

mich interessiert das in der hinsicht ob das vielleicht sogar geschwindigkeitsvorteile bringt

da bei stat ja immer das komplette struct ausgefüllt werden muss und ich ja existens und daten wie größe getrennt abfrage könnt sich das beim server ja lohnen

nur unter access und access() hab ich leider nichts dazu gefunden
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: