写文件,文件正被另一个进程(Writing to file, file being used by

2019-09-17 03:31发布

好了,所以我想不通为什么我不能写入文件。 它说,它正在由另一个进程使用。 这里的错误(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

我不知道我失踪,因为我以为我这个昨天测试和它的工作。

Answer 1:

我想这是保持文件打开的过程是你自己的过程。
当你调用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()创建一个新的文件,指定的字符串写入文件,然后关闭该文件。 如果目标文件已经存在 ,它被覆盖。



Answer 2:

那么这里是我落得这样做,似乎是工作就好了原样。 我拿出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)

此代码确定/取消按钮。

    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


文章来源: Writing to file, file being used by another process