Страница: 1 |
Страница: 1 |
Вопрос: WriteLine & ReadLine
Добавлено: 27.08.12 18:36
Автор вопроса: VbStarter | Web-сайт:
Всем привет. Давно на форуме ничего не писал, вот наконец-то появилась проблема.
Решил для интереса написать одну прогу на vb 2010.
Она должна построчно считывать данные из txt файлика, а при необходимости их туда вписывать (брать текст от
и последовательно дописывать в файлик, предварительно его очистив.)
Вот существующий код:
1) Чтение
If file1.Exists Then
Dim reader As New StreamReader(Application.StartupPath & "\saved_web.txt")
Do While reader.Peek() <> -1
WebMap.ToolStripComboBox1.Items.Add(reader.ReadLine)
Loop
Else
Exit Sub
End If
2) запись
For i As Integer = 0 To Properties.ComboBox1.Items.Count() - 1
WebMap.ToolStripComboBox1.Items.Add(Properties.ComboBox1.Items.Item(i))
Properties.SaveToFile(Application.StartupPath & "\saved_web.txt", Properties.ComboBox1.GetItemText(Properties.ComboBox1.Items.Item(i)))
Next
Dim stream As New System.IO.FileStream(fileName, FileMode.OpenOrCreate)
Dim sw As New System.IO.StreamWriter(stream)
sw.WriteLine(data)
If sw.AutoFlush = False Then
sw.Flush()
End If
sw.Close()
End Sub
В принципе работает, только при сохранении (перезаписи) вижу что-то типа
maps.google.ru
u
maps.google.ru
maps.yandex.ru
там где u должна быть нигма, там где гугль 2 раз сверху рамблер. Что не так?
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #1
Добавлено: 27.08.12 22:53
да все не так.. для работы с текстом кури TextReader/TextWriter + using
Номер ответа: 2
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #2
Добавлено: 27.08.12 22:55
либо:
File.ReadAllText
File.ReadAllLines
для чтения и аналоги этих методов для записи
Номер ответа: 3
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #3
Добавлено: 27.08.12 22:59
Кроме того ToolStripItemCollection имеет метод AddRange.. что в совокупности с ReadAllLines избавит тебя от бестолковых циклов
Номер ответа: 4
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #4
Добавлено: 27.08.12 23:15
<telepat_mode>
У тебя проблемы с кодировкой (не видит русского текста)
</telepat_mode>
Номер ответа: 5
Автор ответа:
ragulius
Вопросов: 1
Ответов: 6
Профиль | | #5
Добавлено: 28.08.12 02:12
не FileMode.OpenOrCreate, а FileMode.Create + FileAccess.ReadWrite http://msdn.microsoft.com/en-us/library/aa328807(v=VS.71).aspx ps. а если используешь OpenOrCreate, юзай Stream.SetLength(0)
Номер ответа: 6
Автор ответа:
hueeveert
Вопросов: 0
Ответов: 3
Профиль | | #6
Добавлено: 28.08.12 22:31
Dim stream As New System.IO.FileStream(fileName, FileMode.Create, FileAccess.Write) 'FileMode.OpenOrCreate)
' чі так
' FileMode.OpenOrCreate
' stream.SetLength(0)
Dim sw As New System.IO.StreamWriter(stream)
sw.WriteLine(data)
Номер ответа: 7
Автор ответа:
VbStarter
ICQ: 357911808
Вопросов: 118
Ответов: 1340
Web-сайт:
Профиль | | #7
Добавлено: 28.08.12 23:17
не FileMode.OpenOrCreate, а FileMode.Create + FileAccess.ReadWrite http://msdn.microsoft.com/en-us/library/aa328807(v=VS.71).aspx ps. а если используешь OpenOrCreate, юзай Stream.SetLength(0)
не думаю что есть особая разница перезаписать или открыть и очистить файл.
Eros, спасибо. А кодировка у меня 1251.
Номер ответа: 8
Автор ответа:
петросян
Вопросов: 1
Ответов: 7
Профиль | | #8
Добавлено: 30.08.12 13:55
А чистится ли файл методом Flush\Autoflush; либо открытием в режиме OpenOrCreate?
Номер ответа: 9
Автор ответа:
бзззззьььь
Вопросов: 0
Ответов: 6
Профиль | | #9
Добавлено: 02.09.12 23:59
БУГАГА
Номер ответа: 10
Автор ответа:
VbStarter
ICQ: 357911808
Вопросов: 118
Ответов: 1340
Web-сайт:
Профиль | | #10
Добавлено: 05.09.12 15:19
А чистится ли файл методом Flush\Autoflush; либо открытием в режиме OpenOrCreate?
Гугль подсказывает, что чистится файл так же WriteLine "".