Страница: 1 | 
		
		 
			   
			 
			 
			 
			 Страница: 1 | 
 
			
 
  
		
     
  
    
Вопрос: WriteLine & ReadLine
     
    
Добавлено: 27.08.12 18:36
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
    
 VbStarter | Web-сайт: moscowdevils.ru | ICQ: 357911808 
      
       
  
Всем привет. Давно на форуме ничего не писал, вот наконец-то появилась проблема.
 
    
Решил для интереса написать одну прогу на 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 "".