C# C# Pfad einlesen

Fasko

Lt. Junior Grade
Registriert
Jan. 2011
Beiträge
474
Hallo,

ich möchte, dass der Benutzer bei meinem Programm in seiner Textbox einen Pfad eingeben kann wie:
"C:\temp\meins\"
und dann der eine Datei an diesem Ort erstellt wird.

Allerdings scheint das mit der Nutzung des Pfades nicht richtig zu funktionieren. Ich habe auch ohne die EIngabe einzulesen schon Probleme...



Code:
String path1 = "C:\\tmp\\notizen\\notizen.txt";
StreamReader derVorleser = new StreamReader(path1);

Hierbei wird mir ein Fehler ausgegeben. :-(
Wie muss ich mit Pfaden umgehen?


Gruß
 
Du versuchst eine Datei zu lesen, die nicht vorhanden ist. Der Stream_Reader_ ist hier die falsche Anlaufstelle :-).
 
Willst du nun lesen oder schreiben? Für Text gibts die Klassen TextReader und TextWriter.
 
Sieht so aus dass du einfach Text Dateien erstellen willst.

Dann geht es so weiter:

Code:
using (StreamWriter sr = File.CreateText("foo"))
{
	sr.Write("bar");
}

Das ist die bare-bones Version. Etliche Exception-Handling Kode muss auch rein.
 
Also man muss solche Dinge auch immer mit Exceptionhandling angehen.
Habe dir mal ein Projekt angehängt, welches das StreamReaden mit Exceptionhandling angeht
Sehe gerade, dass ich vergessen habe den Stream zu schließen.
Einfach unter dem
Code:
Vorleser.ReadtoEnd();
ein
Code:
Vorleser.Close();
einfügen.
Möchte man Zeile für Zeile einlesen, so macht man dies mit diesem Code:
Code:
                while (!Vorleser.EndOfStream)
                {
                    StreamedText_txtb.Text += Vorleser.ReadLine();
                }
                Vorleser.Close();
 

Anhänge

Zuletzt bearbeitet:
Wenn du nur eine Datei erzeugen willst, dann kannst du das per File.Create machen.
Wenn du auch gleich irgendwas in die Datei schreiben willst bietet sich File.WriteAllText an.
Zum Anhängen von Text an eine Datei gibts File.AppendText.

Das dürften wohl die einfachsten Möglichkeiten für den Dateizugriff sein.
Du solltest dir evtl. mal anschauen was die File Klasse noch so alles bietet, kann auf jeden Fall nicht schaden: File-Klasse
 
Danke danke...
Aber mir geht eigentlich nur um die Behandlung des Pfades. Das andere sollte als irgendein Beispiel dienen.

Mein Problem ist, dass ich nicht weiß, wie ich den Pfad angeben muss, wenn ich ihn in einer Variablen speicher.

Also beim Erstellen einer Datei zum Beispiel, will ich den Pfad zu dieser angeben können indem ich eine Variable (also meiner Überlegung nach String) übergebe.
Wenn ich in meinem Programm die Pfade fest setze mit z.B.

@"C:\tmp\meins\test.txt"
funktioniert der Code.
Wenn ich allerdings die Variable path2 übergeben will hängt das Programm sich an dieser Stelle auf. Egal ob ich damit eine Datei erstellen will, oder es bei if Verzweigungen nutze wie hier:
Code:
  if (Directory.Exists(path2) == false)
            {
                Directory.CreateDirectory(@"C:\tmp");

            } // if Ende

während
Code:
 if (Directory.Exists(@"C:\tmp\") == false)
            {
                Directory.CreateDirectory(@"C:\tmp");

            } // if Ende
funktioniert.

Gruß
 
Zuletzt bearbeitet:
Das @ vor einem String, dient nur dazu Literale so zu übernehmen, wie sie dort stehen.

Das erste Beispiel funktioniert nicht, da Directory.Exists() kein bool erwarten kann. Außerdem fehlt eine Klammer.

Warum der Code im Eingangspost nicht funktioniert, stand übrigens schon in der ersten Antwort.
 
Warum verschweigst du uns, wie du path2 setzt?
Bedenke, dass "C:\tmp\meins\test.txt" eine Datei und kein Verzeichnis darstellt.
 
Achso... äh, die Hitze machts.. :rolleyes:

Code:
[B]path2= textbox.Text; // Der User gibt C:\tmp\ ein[/B]

if (Directory.Exists(path2) == false)
            {
                Directory.CreateDirectory(@"C:\tmp");

            } // if Ende

während
Code:
 if (Directory.Exists(@"C:\tmp\") == false)
            {
                Directory.CreateDirectory(@"C:\tmp");

            } // if Ende
 
Der Benutzer gibt wirklich "C:\tmp\" (ohne Anführungszeichen) und nichts anderes ein? Und das Programm "hängt" bei Directory.Exists()? Es gibt keine Exception?
 
Zurück
Oben