2016-11-22 3 views
-1

Я хочу написать какой-нибудь текст в текстовый файл, это то, что у меня есть, и он работает в основном:writeToFile.WriteLine backspace?

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

и она больше не дает пространства.

Edit:

Я знаю, что моя проблема была, я использовал lbGameList.SelectedItem.ToString(), чтобы найти имя и это дает мне места, поэтому я добавил .TrimEnd к нему, и он работает в настоящее время, спасибо