2016-05-13 2 views
0

Я следовал примеру here о сериализации фрагментов большого файла. Как-то, будучи новым для сериализации, я теперь теряю информацию о том, какие параметры передаются моему методу Serialize. Я отложил подход, который использовал yesterday из-за исключения OOM. Поблагодарите вашу помощь.Сериализация файлового файла

Public Shared Sub ReadAndProcessLargeFile(theFilename As String, ByVal obj As LocalDBObject, Optional whereToStartReading As Long = 0) 
Dim bf As New BinaryFormatter() ' Create a binary formatter for this stream. 

Using fileStram As New FileStream(theFilename, FileMode.Open, FileAccess.Read) 
    Dim buffer As Byte() = New Byte(fileStram.Length - 1) {} 
    fileStram.Seek(whereToStartReading, SeekOrigin.Begin) 
    Dim bytesRead As Integer = fileStram.Read(buffer, 0, buffer.Length) 
    While bytesRead > 0 
     bytesRead = fileStram.Read(buffer, 0, buffer.Length - 1) 
     'It is here where I am now lost. What parameters do I supply to my Serialize method below 
     bf.Serialize() 
    End While 
End Using 
End Sub 
+0

Почему вы читаете поток, если хотите сериализовать его? – Gusman

+0

Итак, как мне это сделать # Гусман? –

+0

, но вы хотите сериализовать или десериализовать? вы передаете аргументы типа 'whereToStartReading', и функция называется' ReadAndProcessLargeFile' ... что не имеет смысла, вы хотите сохранить или получить объект? – Gusman

ответ

0

Хммм, что код просто ничего не сериализации, сериализовать вы должны сделать это:

Public Shared Sub Serialize(theFilename As String, ByVal obj As LocalDBObject) 
    Dim bf As New BinaryFormatter() ' Create a binary formatter for this stream. 

    Using fileStram As File.Create(theFilename) 
     bf.Serialize(fileStram, obj); 
    End Using 
End Sub 

Но я подозреваю, что это не то, что вы хотите, если вы не объяснить немного лучше ваш вопрос действительно трудно понять, чего вы хотите достичь.

+0

Этот код, который вы только что предоставили, выдаст исключение из памяти. Пробовал это уже. Я хотел один, который разбил бы большой файл на куски, а затем сериализовал –

+0

, это невозможно сделать, сериализация делает все внутренне, поэтому, если Serialize выдает исключение (что немного странно), вы не можете сделать это с сериализацией. Вы уверены, что сериализация - правильный инструмент? вы продолжаете говорить «сериализовать большой файл», имеет ли файл LocalDBObject содержимое файла? если это так, тогда напишите содержимое файла вручную, не сериализуйте его. Если вы добавите структуру LocalDBObject к вопросу, было бы очень полезно понять, в чем проблема. – Gusman

Смежные вопросы