powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / распаковка и обработка файлов в буфере без записи на диск
1 сообщений из 1, страница 1 из 1
распаковка и обработка файлов в буфере без записи на диск
    #37805227
Andrey Sk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стоит задача распаковать последовательно несколько однотипных файлов. Каждый файл представляет собой json, который необходимо отпарсить в БД. Сейчас схема работает так - каждый файл распаковывается в файл на сервере, потом они читаются с диска и парсятся. Захотелось в этой схеме исключить промежуточную операцию записи-чтения на диск, т.е. попытаться распаковывать каждый файл в буфер и вести его обработку без записи на диск прямо в памяти работая с буфером. Для этого взял на мой взгляд подходящий код с msdn, но он не работает - totalCount всегда равно 0. Сама обработка json здесь не показана. Может кто подскажет где я ошибаюсь?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
         Private Function ReadAllBytesFromStream(stream As Stream, buffer() As Byte) As Integer
		' Use this method is used to read all bytes from a stream.
		Dim offset As Integer = 0
		Dim totalCount As Integer = 0
		While True
			Dim bytesRead As Integer = stream.Read(buffer, offset, 100)
			If bytesRead = 0 Then
				Exit While
			End If
			offset += bytesRead
			totalCount += bytesRead
			Response.Write("number of bytes read: " & totalCount & "<BR>")
		End While
		Return totalCount
	End Function 'ReadAllBytesFromStream

	Private Sub DeflateDecompress(filename As String)
        Dim infile As FileStream
		Try	
			infile = New FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read)
			Dim buffer(infile.Length - 1) As Byte
			Dim ms As New MemoryStream()
			Dim zipStream As New DeflateStream(ms, CompressionMode.Decompress)
			Dim decompressedBuffer(buffer.Length + 100) As Byte
			' Use the ReadAllBytesFromStream to read the stream.
			Dim totalCount As Integer = ReadAllBytesFromStream(zipStream, decompressedBuffer)
			Response.Write("Decompressed " & totalCount & " bytes"&"<BR>")
			zipStream.Close()
		Catch e As Exception
            Response.Write ("Error: The file being read contains invalid data.<BR>")
        End Try
    End Sub 'DeflateCompressDecompress
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim nn As Long
        Dim fi As String 
		For nn = 1 To 30
			fi = Server.MapPath("~") & "myfolder\" & CStr(nn) & ".txt.gz"
			If File.Exists(fi) Then
				DeflateDecompress(fi)
			Else
				Response.Write("File " & fi & " does not exists!" & "<BR>")
				Exit For
			End If
		Next nn
    End Sub
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / распаковка и обработка файлов в буфере без записи на диск
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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