Запись информации из поля со списком в текстовый файл - PullRequest
1 голос
/ 15 июня 2011

Я пытаюсь поместить информацию из комбинированного списка в текстовый файл, чтобы ее можно было сохранить. Если в поле со списком содержится информация о Джоне, Мэри, Джеке, я бы хотел, чтобы она отображалась в текстовом файле следующим образом:

John
Mary
Jack

Код, который я сейчас использую, дает результат JohnMaryJack в текстовом файле

For Each item As Object In cmbworld.Items
        Dim test As String
        test = item
        sb.AppendFormat("{0}", item)
        Dim FILE_NAME As String = "D:\Documents\test.txt"
        If System.IO.File.Exists(FILE_NAME) = True Then
            Dim objWriter As New System.IO.StreamWriter(FILE_NAME)
            objWriter.Write(test)
            objWriter.WriteLine()
            objWriter.Close()
            MsgBox("Text written to file")
        Else
            MsgBox("File Does Not Exist")
        End If

    Next

Как бы это исправить?

Ответы [ 3 ]

1 голос
/ 15 июня 2011

Сначала я бы взял запись в файл из цикла For Each. Таким образом, вы пишете в файл только один раз. Во-вторых, вы можете немного адаптировать ответ @BiggsTRC к

sb.AppendFormat("{0} {1}", item, Environment.NewLine)

Кроме того, вы используете переменную test для записи в текстовый файл, а не в построитель строк, который вы использовали. Таким образом, форматирование никогда не попадет в файл.

Итак, чем ваш кусок кода выглядит примерно так:

Dim sb as new StringBuilder()

For Each item As Object In cmbworld.Items
        'Dim test As String
        'test = item
        sb.AppendFormat("{0} {1}", item, Environment.NewLine)
Next

Dim FILE_NAME As String = "D:\Documents\test.txt"
If System.IO.File.Exists(FILE_NAME) = True Then
    Dim objWriter As New System.IO.StreamWriter(FILE_NAME)
    objWriter.Write(sb.ToString()) 'Use the stringbuilder here
    objWriter.WriteLine()
    objWriter.Close()
    MsgBox("Text written to file")
Else
    MsgBox("File Does Not Exist")
End If

В нем может быть какая-то незначительная синтаксическая ошибка, потому что я давно пишу VB, и на данный момент у меня нет VS, но я думаю, вы понимаете; -)

0 голосов
/ 15 июня 2011
IO.File.WriteAllLines(filename, (From p As String In cmbworld.Items).ToArray)
0 голосов
/ 15 июня 2011

Я думаю, вам просто нужно изменить эту строку:

sb.AppendFormat("{0}", item)

Чтобы быть таким:

sb.AppendFormat("{0}\r\n", item)

(обратите внимание на пробел после {0})

Это даст вам пробел после имени каждого человека, так что в итоге вы получите по одному имени в строке с возвратом после последней строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...