2012-05-09 52 views
2

好的,所以我無法弄清楚爲什麼我不能寫入文件。它說它正在被另一個進程使用。這裏的錯誤(IOException異常是未處理):寫入文件,正在被另一個進程使用的文件

The process cannot access the file 'C:\Temp\TempFile.cfg' because it is being used by another process. 

下面是我使用寫入文件的當前代碼:

Dim myConfig 
    Dim saveFileDialog1 As New SaveFileDialog() 

    saveFileDialog1.Filter = "Configuration Files (*.cfg)|*.cfg" 
    saveFileDialog1.FilterIndex = 2 
    saveFileDialog1.RestoreDirectory = True 

    If saveFileDialog1.ShowDialog() = DialogResult.OK Then 
     myConfig = saveFileDialog1.OpenFile() 
     If (myConfig IsNot Nothing) Then 
      System.IO.File.WriteAllText(saveFileDialog1.FileName, TextBox1_Output_Module.Text & vbCrLf & TextBox2_Output_Module.Text & vbCrLf & TextBox3_Output_Module.Text) 
      myConfig.Close() 
     End If 
    End If 

我不知道我失蹤,因爲我以爲我測試了這個昨天,它的工作。

+0

那是什麼其他的過程? –

+0

這就是我不知道的。我正試圖寫入一個尚未創建的文件,所以它不像我覆蓋已經存在的文件,可能在另一個程序如記事本或其他程序中打開。 – Muhnamana

回答

1

那麼這就是我最終做的事情,似乎現在工作得很好。我拿出if條件並且保持原樣。我以後可以隨時編碼取消。

Dim myConfig 
    Dim saveFileDialog1 As New SaveFileDialog() 

    saveFileDialog1.Filter = "Configuration Files (*.cfg)|*.cfg" 
    saveFileDialog1.FilterIndex = 2 
    saveFileDialog1.RestoreDirectory = True 

    System.IO.File.WriteAllText(saveFileDialog1.FileName, TextBox1_Output_Module.Text & vbCrLf & TextBox2_Output_Module.Text & vbCrLf & TextBox3_Output_Module.Text) 

這是ok/cancel按鈕的代碼。

If saveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then 
     System.IO.File.WriteAllText(saveFileDialog1.FileName, TextBox1_Output_Module.Text & vbCrLf & TextBox2_Output_Module.Text & vbCrLf & TextBox3_Output_Module.Text) 
    End If 
+0

如果用戶在SaveDialog上按下取消會發生什麼? – Steve

+0

添加好/取消代碼。 – Muhnamana

3

我想保持文件打開的過程是你自己的過程。
當您調用saveDialog1.OpenFile()時,您正在打開文件並返回一個流。
然後您調用WriteAllText(),它試圖再次打開導致上述異常的同一個文件。
你能解決簡單地刪除調用的OpenFile()

If saveFileDialog1.ShowDialog() = DialogResult.OK Then 
     File.WriteAllText(saveFileDialog1.FileName, TextBox1_Output_Module.Text & vbCrLf & TextBox2_Output_Module.Text & vbCrLf & TextBox3_Output_Module.Text) 
    End If 

只要記住WriteAllText()創建一個新的文件,指定的字符串寫入文件,然後關閉該文件。如果目標文件已存在,它將被覆蓋。

相關問題