好吧,所以我无法弄清楚为什么我不能写入文件。它说它被另一个进程使用。这是错误(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 :(得分: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()会创建一个新文件,将指定的字符串写入该文件,然后关闭该文件。如果目标文件已存在,则会被覆盖。
答案 1 :(得分: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