2012-03-19 113 views
2

basicLog是名稱和時間戳列表。我想將它們寫入文件。我得到的兩個錯誤是';'在StreamWriter行和'文件'上。在第二行。C#StreamWriter未寫入文件

';'錯誤是:可能的錯誤的空語句 文件上的錯誤是:名稱'文件'在當前上下文中不存在。

該文件被創建得很好,但沒有任何被寫入它。我對當前上下文中不存在的文件感到困惑,因爲它在創建之前就已經存在。感謝您的任何幫助。

foreach (BasicLog basicLog in emailAttach) 
{ 
    using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\sorted.txt", true)); 
    file.WriteLine(basicLog.LastName + " - " + basicLog.InOrOut + " - " + basicLog.EventTime + "\n"); 
} 
+1

['using'聲明(C#參考)](http://msdn.microsoft.com/en-us/library/yh598w02。 aspx) – tcovo 2012-03-19 14:41:00

回答

4

哎呀有在使用線的端部的分號???

也許你的意圖是:

using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\sorted.txt", true)) 
{ 
    foreach (BasicLog basicLog in emailAttach) 
    {   
     file.WriteLine(basicLog.LastName + " - " + basicLog.InOrOut + " - " + basicLog.EventTime + "\n"); 
    } 
} 

好奇,同樣的事情發生在我今天上午:-)

2

file例如這條線後,將得到正確的棄置(由於您使用using ):

using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\sorted.txt", true)); 

將其更改爲

System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\sorted.txt", true); 

或完整代碼,

System.IO.StreamWriter file; 
foreach (BasicLog basicLog in emailAttach) 
{ 
    file = new System.IO.StreamWriter(@"C:\\sorted.txt", true); 
    file.WriteLine(basicLog.LastName + " - " + basicLog.InOrOut + " - " + basicLog.EventTime + "\n"); 
} 

或作出正確的使用using

foreach (BasicLog basicLog in emailAttach) 
{ 
    using(System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\sorted.txt", true)) 
    { 
     file.WriteLine(basicLog.LastName + " - " + basicLog.InOrOut + " - " + basicLog.EventTime + "\n"); 
    } 
} 
+0

最好刪除分號而不是使用分號。使用放在這裏 – Archeg 2012-03-19 14:40:42

+0

@Archeg這個人是*不*有一個備用分號,他有一個*錯位*一個,現在去和他解釋一下。事情是他正在誤用'using'指令 – Shai 2012-03-19 14:41:58

+0

@Archeg是對的。如果打開文件時不使用'使用',並且存在例外,則該文件將保持打開狀態,並具有所有可能的相關問題 – MiMo 2012-03-19 14:43:53

2

您寫入文件之前配置的StreamWriter。重構到:

using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\sorted.txt", true)) 
{ 
    foreach (BasicLog basicLog in emailAttach) 
    {  
     file.WriteLine(basicLog.LastName + " - " + basicLog.InOrOut + " - " + basicLog.EventTime + "\n"); 
    } 
} 
5

是的,你確實有一個錯誤的空白陳述。

刪除';'並縮進以顯示原因:

foreach (BasicLog basicLog in emailAttach) 
{ 
    using (System.IO.StreamWriter file = 
      new System.IO.StreamWriter(@"C:\\sorted.txt", true)) //; 
    { 
     file.WriteLine(basicLog.LastName + " - " + basicLog.InOrOut + " - " 
      + basicLog.EventTime + "\n"); 
    } 
} 

WriteLine()語句是(應該)在using()的控制下。 {}使這更清晰。

這將工作,但要注意,它是非常低效的,你重新打開文件(爲append)多次。

因此,最好是使用以反轉的foreach /:

using (System.IO.StreamWriter file = 
     new System.IO.StreamWriter(@"C:\\sorted.txt", true)) 
{ 
    foreach (BasicLog basicLog in emailAttach) 
    { 
     file.WriteLine(basicLog.LastName + " - " + basicLog.InOrOut + " - " 
      + basicLog.EventTime + "\n"); 
    } 
} 
相關問題