2013-10-26 118 views
1

我試圖把所有這些字符串放在一起放到我的程序保存文檔的路徑中。沒什麼奇特的。但每次我在調試時保存文件時,它都會創建一個以該文件命名的文件夾,而不會執行其他任何操作。我覺得這是一個簡單的問題,但我無法找到如何解決它。請幫助!C#文件保存問題

我的代碼

private void btnSave_Click(object sender, EventArgs e) 
{ 
    string strNotes = rtbNotes.Text.ToString(); 
    string strUser = txtUser.Text.ToString() + "\\"; 
    string strClass = txtClass.Text.ToString() + "\\"; 
    string strDate = DateTime.Today.Date.ToString("dd-MM-yyyy"); 
    string strLocation = "C:\\Users\\My\\Desktop\\Notes\\"; 
    string strType = txtType.Text.ToString(); 
    string strFile = strLocation + strUser + strClass + strDate; 
    string subPath = strFile + "." + strType; 
    bool isExists = System.IO.Directory.Exists(subPath); 
    if (!isExists) 
     System.IO.Directory.CreateDirectory(subPath); 
    System.IO.File.WriteAllText(strFile, strNotes); 
} 
+0

您是否檢查路徑結果? subPath看起來像一個文件不是目錄 – Sam

+0

此代碼應創建一個全名+類型的目錄。然後,它應該創建一個沒有包含strNotes擴展名的文件。 (除非發生錯誤) – 2013-10-26 01:34:23

回答

1

首先,你strLocation路徑無效:

C:\用戶\我的\桌面\ NOTES \

其次要傳遞整個文件路徑(包括文件名/擴展名)到Directory.Exists中,因此它實際上檢查是否存在名爲「12/12/13.txt」的文件夾(您應該簡單地傳遞文件夾路徑)。

您然後試圖寫一個文件,但通過應該是什麼的目錄路徑...

你使用調試器逐步執行代碼?這將有所幫助。

private void button1_Click(object sender, EventArgs e) 
     { 
      string strNotes = "Some test notes."; 
      string strUser = "someuser" + "\\"; 
      string strClass = "SomeClass" + "\\"; 
      string strDate = DateTime.Today.Date.ToString("dd-MM-yyyy"); 
      string strLocation = "C:\\Users\\My\\Desktop\\Notes\\"; 
      string strType = "txt"; 
      string strFile = strLocation + strUser + strClass + strDate; // ... this is: C:\Users\My\Desktop\Notes\ 
      string subPath = strFile + "." + strType; // .. this is: C:\Users\My\Desktop\Notes\someuser\SomeClass\26-10-2013.txt 
      bool isExists = System.IO.Directory.Exists(subPath); // ... Checks directory: C:\Users\My\Desktop\Notes\ exists... 
      if (!isExists) 
       System.IO.Directory.CreateDirectory(subPath); // ... Creates directory: C:\Users\My\Desktop\Notes\ ... 
      System.IO.File.WriteAllText(strFile, strNotes); // ... Writes file: this is: C:\Users\My\Desktop\Notes\26-10-2013 ... 
     } 
+0

實際上,我認爲'strFile'不是一個目錄,而是一個缺少擴展名的文件。 – 2013-10-26 01:38:16

+0

啊是的..好點...我從調試器複製和粘貼文件夾路徑,編輯! – BenjaminPaul

+0

我像你說的那樣經歷過它,改變了寫和創建文件夾字符串,它的工作!非常感謝! –

0

你需要調試,看子路徑的價值。它看起來像被設置爲你想要的文件名的值,但沒有擴展名。

我想你應該有

string subPath = strLocation + strUser + strClass + strDate; 
string strFile = subPath + "." + strType;