VB.Net 无法写入创建的文本文件 System.IO

VB.Net Writing to created text file not working System.IO

我搜索了不同的解决方案来帮助我调试我的程序,但没有任何效果。我正在创建一个项目生成器,它生成项目和统计信息,然后创建并写入 .txt 文件。唯一的问题是它没有写入文本文件,我不知道为什么。 下面是创建和写入文件的代码:

                'Creates item text file
                TextName = "Item" & ItemCount & "." & ItemType & ".Level" &        Level & "." & itemClass & "." & Rarity(0)
                Dim path As String = "C:\Users\ryanl3\Desktop\My Stuff\Realms\Items\" & TextName & ".txt"

                'Appends the stats to text file
                Dim fw As System.IO.StreamWriter
                fw = File.CreateText(path)
                fw.WriteLine("Name: " & itemName)
                fw.WriteLine("Type: " & ItemType)
                fw.WriteLine("Damage: " & itemDamage)
                fw.WriteLine("Class: " & itemClass)
                fw.WriteLine("Rarity: " & Rarity(0))

我知道统计生成代码正在运行,因为其中一些代码存储在文本文件名中。这段代码在整个源代码中重复了至少二十次,所以如果我能修复第一个代码,我就可以将它应用到其余部分。

如评论中所述,需要关闭流并对其进行处理,以将其内部缓冲区刷新到磁盘。您可以希望 StreamWriter 超出范围,然后垃圾收集器将为您关闭它,但在可靠的应用程序中,您应该自己处理这个问题。

using statement 非常适合这种情况

    Using fw = File.CreateText(path)
       fw.WriteLine("Name: " & itemName)
       fw.WriteLine("Type: " & ItemType)
       fw.WriteLine("Damage: " & itemDamage)
       fw.WriteLine("Class: " & itemClass)
       fw.WriteLine("Rarity: " & Rarity(0))
   End Using

当代码到达 End Using 编译器时,添加所需的代码以处置在该代码开头的 using 块内创建的一次性对象。通过这种方式,您可以释放资源(文件句柄),一切都会顺利进行。