2016-11-22 27 views
-1

我想寫一些文字爲.txt文件,這是我和它的工作原理主要是:writeToFile.WriteLine退格?

 If System.IO.File.Exists(sListItems) = True Then 

      Dim writeToFile As New System.IO.StreamWriter(sListItems, True) 

      writeToFile.WriteLine(vbCrLf & txtGameTitle.Text) 
      writeToFile.Close() 

     Else 

      MsgBox("Error!") 

     End If 
    End If 

的問題是,當我輸入文字,如「你好」,它會而是將其放入txt文件'Hello'(帶有空格)。無論如何要解決這個問題嗎?

+0

不知道爲什麼要添加的空間,但你可以總是將.TrimEnd()應用於您的txtGameTitle.Text。 – petryuno1

+0

@petryuno它只是'.Trim()'...反正只是做這個'txtGameTitle.Text.Trim()'。也不需要檢查文件是否在那裏,如果它不會被創建。 – Codexer

+0

不要使用File.Exists() –

回答

-1

請勿使用File.Exists()。這是一種等待爆炸的競賽狀況,而且速度較慢。相反,請查找與您想要如何使用該文件相匹配的FileMode;然後處理異常(如果失敗)(因爲前面提到的競爭條件潛力,您需要處理異常)。

此外,如果你有你的Using塊正確,你不需要撥打.Close()

Try 
    Using fs As New FileStream(sListItems, FileMode.Open) 
     fs.Seek(0, SeekOrigin.End) 
     Using sw As New StreamWriter(fs) 
      sw.WriteLine(txtGameTitle.Text) 
     End Using 
    End Using 
Catch ex As IOException 
    MsgBox("Error! -- " & ex.Message) 
End If 

但我不知道你真的護理該文件已經存在,而你真正需要做的是這樣的:

File.AppendAllText(sListItems, txtGameTitle.Text) 
-1

嗯,我想我想通了。我改變:

writeToFile.WriteLine()

writeToFile.Write()

,並不再給予空間。

編輯:

我知道我的問題是,我使用lbGameList.SelectedItem.ToString()來查找名稱,它是給我空間,所以我加了.TrimEnd它和現在的工作,謝謝