2016-12-04 14 views
0

У меня есть файл, в который я должен вставить массив байтов в определенном месте файла, а затем должен прочитать этот массив из этого местоположения. Как я могу это сделать в java?Вставить между файлом java

+0

Начните с написания необходимого кода, чтобы прочитать массив байтов из местоположения. Затем вернемся к нам с вопросом о том, как вставить массив байтов. И когда вы это сделаете, покажите нам свой код. –

ответ

0
  1. Load the file as a byte array

  2. Создать байтовый массив, имеющий размер массива вы получили в 1. + размер вашего массива байтов для вставки.

  3. Скопируйте префикс из файла в новый массив байтов, то есть байты, предшествовавшие местоположение вы хотите

  4. Скопируйте массив байтов, которые будут включены в суб-массив, начиная с места

  5. Скопируйте суффикс файла в массив байтов.

  6. Save your byte array back to the file

Это писание часть. Что касается части чтения, вам нужно будет загрузить файл в массив байтов, описанный в 1, а затем прочитать подмассиву из местоположения до его длины.

+0

Можете ли вы поделиться этим кодом? – Mian

+0

@ Mian, это не служба написания кода. В этом ответе описывается способ решения проблемы, но предполагается, что он и его одноклассники действительно хотят его решить. –

0

Вы можете использовать RandomAccessFile (https://docs.oracle.com/javase/7/docs/api/java/io/RandomAccessFile.html), чтобы читать или писать в произвольных местах вашего файла.

Однако, если вам нужно вставить новые данные, не перезаписывая старые (то есть сдвинув существующие данные вправо), которые не могут быть выполнены напрямую через API. Например, вы можете создать новый пустой файл, скопировать все из исходного файла до определенного места, записать новые данные, добавить оставшиеся данные из исходного файла и т. Д.

Другое решение с использованием FileChannels и кода пример можно найти здесь: https://stackoverflow.com/a/17565931/7247713