2009-08-25 97 views
1

早上好所有寫入文本文件C#,IOException異常上的DataGridView

我在與我的C#代碼的方法應該能夠保存到一個文本文件一個DataGridView一些問題。

的代碼如下:

private void saveToTxt_Btn_Click(object sender, EventArgs e) 
    { 
     filenameText.Text = serviceDataGrid.Rows.Count.ToString(); 
     //string toOutFile = @"C:\" + filenameText.Text+".txt"; 
     string toOutFile = @"C:\hello.txt"; 

     FileStream toFile = new FileStream(toOutFile, FileMode.Create); 

     TextWriter toText = new StreamWriter(toOutFile); 

     int count = serviceDataGrid.Rows.Count; 

     toText.WriteLine("\t\t" + filenameText.Text); 
     toText.WriteLine("\t\t" + directoryText.Text+"\n\n"); 

     for (int row = 0; row < count-1; row++) 
     { 
      toText.WriteLine(serviceDataGrid.Rows[row].Cells[0].Value.ToString()); 
     } 
     toText.Close(); 
     toFile.Close(); 
    } 

下面的行返回錯誤:

TextWriter toText = new StreamWriter(toOutFile); 

IOException was unhandled. The process cannot access the file 'C:\hello.txt' because it is being used by another process.

我不能完全確定是什麼問題,但它會建議FileStream和TextWriter之間存在衝突。

任何人都可以解釋這一點嗎? Regards

回答

4

您正在打開它兩次;失去所有的東西toFile完全,並使用using周圍toText

using(TextWriter toText = File.CreateText(toOutFile)) 
    { 
     toText.WriteLine("\t\t" + filenameText.Text); 
     toText.WriteLine("\t\t" + directoryText.Text+"\n\n"); 

     foreach(DataGridViewRow row in serviceDataGrid.Rows) 
     { 
      toText.WriteLine(row.Cells[0].Value.ToString()); 
     } 
    } 

也;你的意思是WriteLine(... + "\n\n")

+0

這工作完美無瑕。非常感謝。 WriteLine(.. +「\ n \ n」);沒有像我想象的那樣行事,所以我的意思是,但它不起作用(因爲我猜你已經知道):) – Ric

1

當您使用行

TextWriter toText = new StreamWriter(toOutFile); 

不需要以下行,因爲如果它不存在的StreamWriter(字符串文件路徑)構造函數將創建一個文件。

FileStream toFile = new FileStream(toOutFile, FileMode.Create); 

而Marc是正確的,你已經在其他實例變量中打開過一次文件,你不能再次打開。

0

我監督你用文件名打開作者。 我以爲你做了 TextWriter toText = new StreamWriter(toFile);