2

我正在尝试检查文件是否存在,如果存在则什么都不做。如果文件不存在,则创建文本文件。然后我想将文本写入该文件。这段代码我哪里出错了?我只是想在文本文件中写入多行,而那部分不起作用。它正在创建文本文件......只是不写入它。

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
4

3 回答 3

11

您似乎没有正确释放您分配给此文件的资源。

确保始终将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)
于 2013-02-15T22:01:22.513 回答
1

这一切都很好!- 这不是创建和写入文件的最佳方式 - 我宁愿创建我想要写入的文本,然后将其写入一个新文件,但是鉴于您的代码,所缺少的只是关闭在写入之前创建文件。只需更改此行:

file = System.IO.File.Create("c:\directory\textfile.txt")

至:

file = System.IO.File.Create("c:\directory\textfile.txt")
file.close

其余的都将起作用。

于 2013-02-15T22:01:44.853 回答
1
 file = System.IO.File.Create("path")

创建后关闭文件,然后尝试写入它。

 file.Close()
     Dim addInfo As New System.IO.StreamWriter("path")
于 2016-11-18T12:20:10.197 回答