Entwickler-Ecke

IO, XML und Registry - !File.Exists


Stephan.M - Di 29.07.08 17:19
Titel: !File.Exists
Hallo,

ich sammle erste Erfahrungen
mit C# und komm bei der Streamprogrammierung insb. File.Exist nicht wirklich weiter.
Obwohl Pfadangabe und Dateiname stimmen wird nichts gefunden.
(bspw.):' C:\kunde.txt '

Für einen Tipp wäre ich dankbar!



C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
            System.Console.Write("Pfad und Dateiname: ");
            string file = System.Console.ReadLine();

            if (!File.Exists(file))
            {
                Console.WriteLine("Datei existiert nicht!", file);
                return;
            }


Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


Christian S. - Di 29.07.08 20:16

Hm. Da fällt mir relativ wenig zu ein :gruebel:

Außer, dass File.Exists auch dann false zurück liefert, wenn die Datei zwar vorhanden der ausführende Nutzer aber keine Leserechte hat. :nixweiss:

Funktioniert es, wenn Du den Pfad als String im Quelltext definierst anstatt ihn über die Konsole einzulesen?

P.S.: :welcome:
P.P.S.: Ich nehme an, die Leerzeichen vor und nach dem Dateinamen sind nur hier im Posting?


Fabian E. - Mi 30.07.08 09:21

Wie verhält sich denn ein string in einer Variable in Bezug auf Escape-Sequenzen?
Werden diese trotzdem ausgewertet?
Vielleicht liegt es daran...


bakachan - Mi 30.07.08 09:30

also wenn du den Filename übergibst sollte da entweder

C#-Quelltext
1:
string fileName = @"C:\blabla.bla"                    

oder

C#-Quelltext
1:
string fileName = "C:\\blabla.bla"                    

stehn.

(@ escaped automatisch ansonsten halt per \ escapen)


Kha - Mi 30.07.08 11:39

user profile iconFabian E. hat folgendes geschrieben:
Wie verhält sich denn ein string in einer Variable in Bezug auf Escape-Sequenzen?
Der Pfad steht doch überhaupt nicht im Quelltext :gruebel: ?
@Stephan: Wenn es immer noch nicht funktioniert: Mit File.OpenRead(file) solltest du eine aussagekräftigere Fehlermeldung bekommen.


Fabian E. - Mi 30.07.08 12:24

user profile iconKhabarakh hat folgendes geschrieben:
user profile iconFabian E. hat folgendes geschrieben:
Wie verhält sich denn ein string in einer Variable in Bezug auf Escape-Sequenzen?
Der Pfad steht doch überhaupt nicht im Quelltext :gruebel: ?


Nein, deswegen fragte ich nach Escape-Sequenzen in einer Variable :tongue:
Und da er etwas vorher C# mäßig den Pfad falsch hatte nahm ich an, dass dieser ohne doppelte Slashs eingeben wurde ;)


Kha - Mi 30.07.08 13:45

user profile iconFabian E. hat folgendes geschrieben:
Nein, deswegen fragte ich nach Escape-Sequenzen in einer Variable :tongue:
Dann würde ich höchstpersönlich nach Redmond fliegen, Hörrn Hejlsberg auf den Hinterkopf schlagen und nur noch Lisp programmieren.
Sorry, aber schon allein der Gedanke, dass jemand so etwas verbrechen könnte ;) ...


Stephan.M - Fr 01.08.08 14:57

vielen Dank Euch für die prompten Antworten;

ja - es liegt an der Escape-Sequenz;
mit: "C:\\kunde.txt" funktionierte es als einziges(!) von der Console aus
Ich habe der Variable den Wert explizit zugewiesen: string file = "C:\\kunde.txt" bzw.
@"C:\kunde.txt"
Seltsamerweise (und es ist absolut verwirrend) funktionierten per Console danach anschliessend "c:\kunde" nebst "C:\\kunde.txt" statt wie zuvor erwartet
Fehler? Phänomen? mit Visual C# 2005 Express auch noch auf zwei Computern..(?!)

Viele Grüße