2017-07-19 2 views
0
public partial class Form1 : Form 
{ 
    string path = [email protected]"C:\Journal"; 
    string fileName = @""; 
    string compact = ""; 
    public Form1() 
    { 
     InitializeComponent(); 
     fileName = monthCalendar1.SelectionRange.Start.ToShortDateString() + ".txt"; 
     compact = (path + @"\" + fileName);   
    } 

    private void btnWrite_Click(object sender, EventArgs e) 
    { 
     if(File.Exists(fileName)) 
     { 
      StreamWriter myWriter = new StreamWriter(compact, true); 
      myWriter.WriteLine(txtDisplay.Text); 
      myWriter.Close(); 
     } 
     else 
     { 
      StreamWriter myWriter = new StreamWriter(compact, true); 
      myWriter.WriteLine(txtDisplay.Text); 
      myWriter.Close(); 
     } 
} 

Ich versuche, Zeug aus einer mehrzeiligen Textbox in eine Datei zu schreiben, wobei das Monatskalenderdatum als Dateiname verwendet wird. Ich bekomme immer einen Fehler, dass das Verzeichnis nicht existiert. Nicht sicher über den Grund, da ich den Ordner im Pfad erstellt habe, schätze ich die Hilfe.Schreiben in Datei, Verzeichnisfehler

System.IO.DirectoryNotFoundException was unhandled 
+0

In welcher Zeile ist der Fehler aufgetreten? – maccettura

+6

Es scheint, dass 'C: \ Journal' nicht existiert. 'StreamWriter' kann eine neue Datei erstellen, aber nicht das Verzeichnis, in das es gehen soll – litelite

+4

Ein möglicher Grund ist'/'in Dateiname. Haben Sie den Wert der Variablen filename debuggt und überprüft? –

Antwort

0

Es scheint, müssen Sie Verzeichnis erstellen. Ein weiteres Problem ist

fileName = monthCalendar1.SelectionRange.Start.ToShortDateString() + ".txt"; 

seit Short Datetime-Format kann '/' oder '\' enthalten, die in Dateinamen verboten sind.

public Form1() { 
    InitializeComponent(); 

    // ToString(...) we don't want/or \ in the file's name 
    fileName = monthCalendar1.SelectionRange.Start.ToString("dd'.'MM'.'yyyy") + ".txt"; 
    compact = Path.Combine(path, fileName);   
    } 

    private void btnWrite_Click(object sender, EventArgs e) { 
    Directory.CreateDirectory(Path.GetDirectoryName(compact)); 

    // Or File.AppendAllText(compact, txtDisplay.Text); 
    File.AppendAllLines(compact, new string[] {txtDisplay.Text}); 
    }