好的,所以我的程序检查看到的是一个文本文件存在(这工作),那么如果它不存在它创建目录和文件,以及将数据保存到文件。当它落入第二个测试语句以创建文本文件时,我收到错误。 该程序将创建目录和文件,但无法写入它。 “unhandeled exception:文件正在被另一个进程使用,如果我点击忽略错误并运行程序,我可以再次单击保存按钮并且它可以正常工作延迟创建文件时使用代码?
所以我想我的问题是,我可以以某种方式延缓写入到文件足够长的其他操作完成,或是否有更好的方法来组织它的代码,所以它不是一个问题
相关代码:
Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
'create necessary directory
'create text file
'if file exist write to file
If My.Computer.FileSystem.FileExists("C:\Documents and Settings\All Users\Documents\NailPolishSelector\polishColors.txt") = True Then
MsgBox("Data Saved")
Using sr As New IO.StreamWriter("C:\Documents and Settings\All Users\Documents\NailPolishSelector\polishColors.txt")
For Each line In lstColors.Items
sr.WriteLine(line)
Next
sr.Close()
End Using
ElseIf My.Computer.FileSystem.FileExists("C:\Documents and Settings\All Users\Documents\NailPolishSelector\polishColors.txt") = False Then
My.Computer.FileSystem.CreateDirectory("C:\Documents and Settings\All Users\Documents\NailPolishSelector")
Dim fs As FileStream = File.Create("C:\Documents and Settings\All Users\Documents\NailPolishSelector\polishColors.txt")
'error occurs here
Using srr As New IO.StreamWriter("C:\Documents and Settings\All Users\Documents\NailPolishSelector\polishColors.txt")
For Each line In lstColors.Items
srr.WriteLine(line)
Next
srr.Close()
End Using
MsgBox("File Created")
End If
End Sub
你能解释downvote吗?我不明白我的问题有什么问题。我搜索并没有发现类似的东西。 – Aaron 2014-11-05 20:48:15
我本来会问同样的问题。 – logixologist 2014-11-05 20:49:11
取出'File.Create'。 StreamWriter将创建文件; 'File.Create'给你一个它创建的文件的句柄,但你不需要它。另外,使用'If = True'不是必须的,我建议你删除'= True'部分以使其更具可读性,并且使用'Not'而不是'= False'。 –
2014-11-05 20:49:42