2014-09-02 45 views
0

您好爲什麼dosent這項工作?(StreamWriter)進程無法訪問該文件,因爲它正在被另一個進程使用

using (StreamWriter sw = File.CreateText(path)) 
{ 
    for (int i = 0; i < 100; i++) 
    { 
     sw.WriteLine(i.ToString()); 
    } 
    int count = File.ReadLines(path).Count(); 
    sw.WriteLine(count.ToString()); 
} 

我收到此錯誤消息:「進程無法訪問文件,因爲它正在被另一個進程使用」。

所以我figgured我不得不把它像這樣:

using (StreamWriter sw = File.CreateText(path)) 
{ 
    for (int i = 0; i < 100; i++) 
    { 
     sw.WriteLine(i.ToString()); 
    } 
} 

using (StreamWriter sw = File.CreateText(path)) 
{ 
    int count = File.ReadLines(path).Count(); 
    sw.WriteLine(count.ToString()); 
} 

,但我得到了同樣的錯誤。 Iam對此很不滿,有人請幫助我:)

+0

哪裏錯誤發生?你會更好地使用'新StreamWriter(路徑)'(順便說一句,你知道該文件現在有100行,那麼爲什麼你需要計數?) – Sayse 2014-09-02 12:52:14

+0

這不是真正的代碼。它更多。但它在File.ReadLines – Dujskan 2014-09-02 12:55:06

+0

崩潰確定,然後是因爲你正在試圖讀取已打開的文件。 – Sayse 2014-09-02 12:56:02

回答

3

當您撥打ReadLines()時,由於StreamWriter開放,文件已經打開。

你必須按順序執行的操作:

 int count = File.ReadLines(path).Count(); 
     using (StreamWriter sw = File.CreateText(path)) 
     {    
      sw.WriteLine(count.ToString()); 
     } 
0
  using (StreamWriter sw = File.CreateText(path)) 
      { 
       for (int i = 0; i < 100; i++) 
       { 
        sw.WriteLine(i.ToString()); 
       } 

      } 

      int count = File.ReadLines(path).Count(); 
      using (StreamWriter sw = File.CreateText(path)) 
      { 

       sw.WriteLine(count.ToString()); 
      } 
+0

使用將配置和關閉流,不需要手動執行。 – 2014-09-02 13:01:32

+0

確實,我編輯了... – apomene 2014-09-02 13:02:27

+0

編輯完成後,您的答案與其他答案沒有區別。 – 2014-09-02 13:13:17

相關問題