powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB.NET, StreamReader, чтение без блокировки
7 сообщений из 7, страница 1 из 1
VB.NET, StreamReader, чтение без блокировки
    #36661839
judnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардон, что туплю...
просто переход с VB6 на VB.NET местами дается совсем не просто...

а вопрос такой - как в следующем коде открыть файл без блокировки для других процессов?
и файл надо бы читать построчно, так как он шибко большой...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
        Dim oneStr$

        Const fname$ = "c:\test.txt"

        Dim sr As StreamReader = New StreamReader(fname, Encoding.Default)
        Do While sr.Peek >=  0 
            oneStr = sr.ReadLine()
        Loop

...
Рейтинг: 0 / 0
VB.NET, StreamReader, чтение без блокировки
    #36661912
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
judnikovпардон, что туплю...
просто переход с VB6 на VB.NET местами дается совсем не просто...

Нужно также перейти с форума VB6 на VB.NET
...
Рейтинг: 0 / 0
VB.NET, StreamReader, чтение без блокировки
    #36662456
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал для чтения всего файла, но и для строки легко исправить, два способа.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
'Можно рид, но пока поток не закроешь, файл не удалишь
Sub Main()
	Dim FStreamRead As IO.StreamReader = FileIO.FileSystem.OpenTextFileReader("D:\TEST.txt", Text.Encoding.GetEncoding( 1251 ))
	Dim sFileBody As String = FStreamRead.ReadToEnd
	FStreamRead.Close()
	
	MsgBox(sFileBody)
End Sub

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
'Можно рид и врайт.
Sub Main()
	Dim sFileBody As String
	
	FileOpen( 1 , "D:\TEST.txt", OpenMode.Input, OpenAccess.Read, OpenShare.Shared)
	sFileBody = InputString( 1 , LOF( 1 ))
	Console.ReadLine()
	FileClose( 1 )
	
	MsgBox(sFileBody)
End Sub
...
Рейтинг: 0 / 0
VB.NET, StreamReader, чтение без блокировки
    #36662461
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если уж файл ну слишком большой... Лучше тогда прочитать его в Binary режиме, а потом перевести в String
...
Рейтинг: 0 / 0
VB.NET, StreamReader, чтение без блокировки
    #36662550
judnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Нужно также перейти с форума VB6 на VB.NET

хех, а профильный форум-то и не сразу заметил... спасибо за наводку.
...
Рейтинг: 0 / 0
VB.NET, StreamReader, чтение без блокировки
    #36662567
judnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VSVLADСделал для чтения всего файла, но и для строки легко исправить, два способа.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
'Можно рид, но пока поток не закроешь, файл не удалишь
Sub Main()
	Dim FStreamRead As IO.StreamReader = FileIO.FileSystem.OpenTextFileReader("D:\TEST.txt", Text.Encoding.GetEncoding( 1251 ))
	Dim sFileBody As String = FStreamRead.ReadToEnd
	FStreamRead.Close()
	
	MsgBox(sFileBody)
End Sub

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
'Можно рид и врайт.
Sub Main()
	Dim sFileBody As String
	
	FileOpen( 1 , "D:\TEST.txt", OpenMode.Input, OpenAccess.Read, OpenShare.Shared)
	sFileBody = InputString( 1 , LOF( 1 ))
	Console.ReadLine()
	FileClose( 1 )
	
	MsgBox(sFileBody)
End Sub


ну вторым способом я писал в VB6 и он оказывается на порядок (в прямом смысле) медленнее.

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

а так, что бы построчно и без блокировки, что-то никак не соображу.
...
Рейтинг: 0 / 0
VB.NET, StreamReader, чтение без блокировки
    #36662979
judnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
judnikovпардон, что туплю...
просто переход с VB6 на VB.NET местами дается совсем не просто...


проблема решена, благодарю всех за помощь

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        Dim oneStr$

        Const fname$ = "c:\test.txt"

        Dim fs As New FileStream(fname, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
        Dim sr As StreamReader = New StreamReader(fs)
        Do While sr.Peek >=  0 
            oneStr = sr.ReadLine()
        Loop

...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB.NET, StreamReader, чтение без блокировки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]