2017-03-09 83 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