2015-09-01 6 views
1

У меня есть byte[] с 3 различными объектами. Как я могу прочитать из byte[] и отделить объекты?Как читать разные объекты из байт []

Мой код:

public byte[] toByteArray() { 

      byte[] bytes; 
      byte[] sb = start.toString().getBytes(); 
      byte[] gb = goal.toString().getBytes(); 
      byte[] mb = gameBoard.toString().getBytes(); 
      bytes = new byte[sb.length + gb.length + mb.length]; 
      System.arraycopy(sb, 0, bytes, 0, sb.length); 
      System.arraycopy(gb, 0, bytes, sb.length, gb.length); 
      System.arraycopy(mb, 0, bytes, gb.length, mb.length); 
      return bytes; 

     } 
+1

Действительно ли это код java-скрипта? – suvroc

+2

Он швы код Java. Кроме того, ваш код не сохраняет объекты, а только строковое представление объекта, который сильно отличается от самого объекта, поэтому, если ваш класс GameBoard переопределяет метод toString() для возврата «HELLO», ваши байты будут заполнены HELLO, что не имеет никакого отношения к gameBoard –

+0

Нет, извините, я поменял его на java –

ответ

3

Похоже, вы говорите о Java не JavaScript.

Я рекомендую вам взглянуть на бинарной сериализации который я предполагаю, что вы ищете: Saving to binary/serialization java

2

Если вы храните ваши данные, как это, это будет очень трудная задача, чтобы прочитать их.

Я рекомендую использовать некоторые встроенные преобразования объектов в байты [] (и обратно), такие как Serializable.

Кроме того, чтобы хранить несколько объектов в один байт [] массив, загляните в ObjectOutputStream

1

Прежде всего вам понадобится фактический байт [], где материал может быть прочитан с. Есть некоторые проблемы о том, что вы пытаетесь.

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

JRE имеет встроенную сериализацию. Другие люди используют XML или JSON, когда им нужно взаимодействовать с чем-то другим. Вы даже можете реализовать свой собственный вкус java.text.Format, который способен форматировать и анализировать ваши объекты. Выбрать свой яд.