То, что вы пытаетесь сделать, это разбить ваши данные на «партии».
Например, вы работаете с «пакетами» всякий раз, когда читаете «строки» из файла. Что определяет «линию»? Это последовательность байтов, оканчивающаяся на \ n. Другой пример: вы читаете 64-килобайтные «куски» из файла. Что определяет «кусок»? Вы делаете, так как вы читаете 65536 байтов каждый раз. Вы хотите переменную длину "чанка"? Вы просто добавляете префикс "chunk" к его размеру, а затем читаете "chunk". Файлы «aiff» (реализациями которых также являются файлы .wav и .avi в MS Windows) и файлы «mov» организованы следующим образом.
Эти три метода являются наиболее фундаментальными для организации потока байтов, независимо от носителя:
- разделители записей
- записи фиксированного размера
- записей с префиксом их размера.
Они могут быть смешаны и / или изменены. Например, у вас могут быть «разделители записей переменных», например, для чтения XML: читать байты с первого «<» до первого «>», добавлять косую черту после первого «<» и вызывать его как конец записи, читать поток до в связи с прекращением записи. Это просто грубое описание. </p>
Выберите метод и реализуйте его как в писателе, так и в читателе. Если вы также задокументировали свой выбор, вы только что определили свой первый протокол.