2012-05-09 145 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()创建一个新的文件,指定的字符串写入文件,然后关闭该文件。如果目标文件已存在,它将被覆盖。

相关问题