Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: WriteLine & ReadLine Добавлено: 27.08.12 18:36  

Автор вопроса:  VbStarter | Web-сайт: moscowdevils.ru | ICQ: 357911808 
Всем привет. Давно на форуме ничего не писал, вот наконец-то появилась проблема.
Решил для интереса написать одну прогу на vb 2010.
Она должна построчно считывать данные из txt файлика, а при необходимости их туда вписывать (брать текст от
Combobox1.GetItemText(Combobox1.Items.Item(i))

и последовательно дописывать в файлик, предварительно его очистив.)
Вот существующий код:
1) Чтение
        Dim file1 As New FileInfo(Application.StartupPath & "\saved_web.txt")
        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) запись
        WebMap.ToolStripComboBox1.Items.Clear()
        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

    Sub SaveToFile(ByVal fileName As String, ByVal data As String)
        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-сайт: moscowdevils.ru
 Профиль | | #7
Добавлено: 28.08.12 23:17
ragulius пишет:
не 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
  1.  
  2. If sw.AutoFlush = False Then
  3.  sw.Flush()
  4. End If



не думаю что есть особая разница перезаписать или открыть и очистить файл.


А чистится ли файл методом Flush\Autoflush; либо открытием в режиме OpenOrCreate?

Ответить

Номер ответа: 9
Автор ответа:
 бзззззьььь



Вопросов: 0
Ответов: 6
 Профиль | | #9 Добавлено: 02.09.12 23:59
БУГАГА

Ответить

Номер ответа: 10
Автор ответа:
 VbStarter



ICQ: 357911808 

Вопросов: 118
Ответов: 1340
 Web-сайт: moscowdevils.ru
 Профиль | | #10
Добавлено: 05.09.12 15:19
петросян пишет:
А чистится ли файл методом Flush\Autoflush; либо открытием в режиме OpenOrCreate?


Гугль подсказывает, что чистится файл так же WriteLine "".

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам