我正在尝试检查文件是否存在,如果是这样,它什么都不做。如果文件不存在则创建文本文件。然后我想写文件到那个文件。这个代码我哪里错了?我只是想在文本文件中写多行,而那部分不起作用。它正在创建文本文件......只是没有写入它。
Dim file As System.IO.FileStream
Try
' Indicate whether the text file exists
If My.Computer.FileSystem.FileExists("c:\directory\textfile.txt") Then
Return
End If
' Try to create the text file with all the info in it
file = System.IO.File.Create("c:\directory\textfile.txt")
Dim addInfo As New System.IO.StreamWriter("c:\directory\textfile.txt")
addInfo.WriteLine("first line of text")
addInfo.WriteLine("") ' blank line of text
addInfo.WriteLine("3rd line of some text")
addInfo.WriteLine("4th line of some text")
addInfo.WriteLine("5th line of some text")
addInfo.close()
End Try
答案 0 :(得分:12)
您似乎没有正确释放使用此文件分配的资源。
确保始终将IDisposable
资源包含在Using语句中,以确保在完成所有资源处理后立即正确释放所有资源:
' Indicate whether the text file exists
If System.IO.File.exists("c:\directory\textfile.txt") Then
Return
End If
Using Dim addInfo = File.CreateText("c:\directory\textfile.txt")
addInfo.WriteLine("first line of text")
addInfo.WriteLine("") ' blank line of text
addInfo.WriteLine("3rd line of some text")
addInfo.WriteLine("4th line of some text")
addInfo.WriteLine("5th line of some text")
End Using
但在你的情况下使用File.WriteAllLines
方法似乎更合适:
' Indicate whether the text file exists
If System.IO.File.exists("c:\directory\textfile.txt") Then
Return
End If
Dim data As String() = {"first line of text", "", "3rd line of some text", "4th line of some text", "5th line of some text"}
File.WriteAllLines("c:\directory\textfile.txt", data)
答案 1 :(得分:1)
这一切都很棒! - 这不是创建和写入文件的最佳方式 - 我宁愿创建我想要编写的文本,然后将其写入新文件,但是考虑到您的代码,所有缺少的是必须关闭在写入之前创建文件。 只需更改此行:
file = System.IO.File.Create("c:\directory\textfile.txt")
为:
file = System.IO.File.Create("c:\directory\textfile.txt")
file.close
其余的都可以。
答案 2 :(得分:1)
file = System.IO.File.Create("path")
关闭文件,然后尝试写入。
file.Close()
Dim addInfo As New System.IO.StreamWriter("path")