2017-03-09 59 views
0

我已经搜索了不同的解决方案来帮助我调试我的程序,但没有任何工作。我创建了一个项目生成器,用于生成项目和统计信息,然后创建并写入.txt文件。唯一的问题是,它不写入文本文件,我不明白为什么。 下面是一个创建并写入文件的代码:VB.Net写入创建的文本文件不起作用System.IO

   '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)) 

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

+1

你关闭了那个Streamwriter吗?顺便说一句,开始使用using语句 – Steve

+1

文件流有一个缓冲区 - 它不会逐行写入或逐字写入。当你关闭并处理流时,它将刷新缓冲区。 – Plutonix

回答

3

如注释中所述,需要关闭流并将其内部缓冲区刷新到磁盘。您可以希望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 

当代码到达结束使用编译器添加所需的代码处置使用块内创建的一次性对象在该代码的开始。通过这种方式,你可以释放资源(文件句柄),一切都应该顺利进行。

+0

我已经用这个替换了所有的源代码块,我会让你知道,一旦.txt文件生成后它是否有效 – LeCarloVC