Entwickler-Ecke

IO, XML und Registry - Datei in unterordner speichern! wie?


skiller - Fr 12.06.09 17:11
Titel: Datei in unterordner speichern! wie?
also ich würde gerne eine txt. datei in einem anderen ordner speichern und aufrufen naja und beim speichern hab ich schon ein problem !!!


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
private void bestaetigen_registrieren_Click(object sender, EventArgs e)
        {
            try
            {
                if (passwort == passwortcheck)
                {
                    StreamWriter schreiber = new StreamWriter(name + ".txt");
                    schreiber.WriteLine(name);
                    schreiber.WriteLine(passwort);
                    schreiber.Close();
                    MessageBox.Show("You are now registered!!!");
                    RegistrierenForm.ActiveForm.Close();
                }
                else
                {
                    MessageBox.Show("You have an error in the application made!!");
                    passwort_registrieren.Clear();
                    pwcheck_registrieren.Clear();
                }
            }
            catch(IOException)
            {
                MessageBox.Show("Datei Konnte nicht gespeichert werden.""Fehler");
            }



ja und in der zeile wo ich das objekt "schreiber" erzeuge da kann man doch das irgendwie in die zeile schreiben das er dass in einen anderen ordner abspeichert und nicht in den untersten ordner wo das programm debuggt wird!!!

also ich möchte die txt.datei z.B.: in den ordner kontos auf den desktop speichern und nicht im untersten debug ordner sou das ihr wisst was ich meine!!

lg skiller

Moderiert von user profile iconNarses: Titel geändert (Mächtigkeit der Satzzeichen auf 1 reduziert).


Ralf Jansen - Fr 12.06.09 17:33

Dann solltest du dem StreamWriter auch den ganzen Pfad mitgeben und nicht nur den Dateinamen.


C#-Quelltext
1:
StreamWriter schreiber = new StreamWriter(@"C:\MeinPfad\MeineDatei.txt");                    


skiller - Fr 12.06.09 17:42

ja aber name ist nicht der dateiname sondern es ist eine variable und was dann in der drin steht z.B.: michael dann fügt er das txt hinzu und dann wird es als michael.txt abgespeichert !!!!

lg skiller


Ralf Jansen - Fr 12.06.09 17:57

Du schaffst es doch jetzt schon ".txt" dran zu hängen. Dann wirst du es doch genauso hinbekommen den Pfad noch davor zu schreiben. Ist das selbe Prinzip.


skiller - Fr 12.06.09 18:05

habs ja grad so probiert aber er speichert es immer auf C: aber man findet es nur in der suche !!!!



C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
private void bestaetigen_registrieren_Click(object sender, EventArgs e)
        {
            try
            {
                if (passwort == passwortcheck)
                {
                    StreamWriter schreiber = new StreamWriter(@"\..\..\" + name + ".txt");
                    schreiber.WriteLine(name);
                    schreiber.WriteLine(passwort);
                    schreiber.Close();
                    MessageBox.Show("You are now registered!!!");
                    RegistrierenForm.ActiveForm.Close();
                }


ja aber so müsste es ja eigentlich gehen oder??

lg


JüTho - Fr 12.06.09 18:10

Ergänzend zu Ralfs Antwort: Zum Zusammensetzen von Dateinamen mit Pfaden ist vorzugsweise Path.Combine zu verwenden; auch Unterordner können dort eingebunden werden. Außerdem sollte bedacht werden, dass ein Anwender nicht in jedem beliebigen Verzeichnis Schreibrechte hat.

Bei deinem (skiller) neuen Versuch hast du fast keine Sicherheit darüber, von welchem Verzeichnis dieser zusammengesetzte Pfad ausgeht. Benutze für so etwas vorzugsweise feste Pfade; in der Application- und Environment-Klasse findest du genügend Vorlagen.

Der StreamWriter wird unvollständig benutzt: Es ist auch Dispose aufzurufen. Dieses Problem wird automatisch gelöst, wenn du es in einen using-Block kapselst. Und es tritt überhaupt nicht auf, wenn die File.ReadXxx verwendest; das ist für Textdateien fast immer einfacher als StreamWriter und Verwandte.

Jürgen


skiller - Fr 12.06.09 18:28

ja aber ich kann jeden pfad hineinschreibn den ich will das programm speichert es mir immer auf c: ab also direkt herausn !!!

lg skiller

edit: ich kann zwar den absoluten pfad angeben will aber den relativen angeben und das geht nicht mit path.combine !!!


JüTho - Fr 12.06.09 19:25

user profile iconskiller hat folgendes geschrieben Zum zitierten Posting springen:
ja aber ich kann jeden pfad hineinschreibn den ich will das programm speichert es mir immer auf c: ab also direkt herausn !!!

Nein, das kann nicht sein. Wenn es ein korrekter (!) Pfad ist, der sich auf D: bezieht, wird es auch auf D: gespeichert.

Zur Erklärung: Prüfe doch einmal Environment.CurrentDirectory zum Zeitpunkt des Speicherns sowie den tatsächlichen Pfad mit Path.GetFullPath.

user profile iconskiller hat folgendes geschrieben Zum zitierten Posting springen:
edit: ich kann zwar den absoluten pfad angeben will aber den relativen angeben und das geht nicht mit path.combine !!!

Doch das geht, wie das folgende Beispiel zeigt:

C#-Quelltext
1:
2:
3:
         configPath = Path.GetDirectoryName(config.FilePath); 
         configPath = Path.Combine(configPath, "..\\Config"); 
         configPath = Path.GetFullPath(configPath);

Jürgen


skiller - Fr 12.06.09 19:32

ja danke jedz klappts hatte da ein paar fehler mit den "\"

trotzdem thx

lg skiller