2013-06-09 6 views
2

У меня есть файл, содержащий java ByteArray.Java ByteArray File Parsing

bytes.inc

byte MyByteArray[] = new byte[] 
{ 
(byte) 0x4D,(byte) 0x5A,(byte) 0x50,(byte) 0x00,(byte) 0x02,(byte) 0x00,(byte) 0x00, 
(byte) 0x00,(byte) 0x04,(byte) 0x00,(byte) 0x0F,(byte) 0x00,(byte) 0xFF,(byte) 0xFF, 
(byte) 0x00,(byte) 0x00,(byte) 0xB8,(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00, 
(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x40,(byte) 0x00,(byte) 0x1A,(byte) 0x00, 
(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00, 
(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00, 
(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00, 
(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00, 
(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x01,(byte) 0x00, 
(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x00, 
}; 

Полный файл (bytes.inc) является 283kb, который слишком много для компилятора, чтобы позволить мне вставить в определенный класс. Я попытался прочитать файл как байтовый байт, а затем преобразовать его из строки в фактический байт, потому что при чтении файлов производятся строки, когда я делаю это и конвертирую байт назад, он показывает текстовое представление байта, а не его фактическое преобразование. Как я могу получить возможность создавать полный ByteArray без включения его в огромный метод?

ответ

1

Одним из вариантов является сохранить фактические байты в файле и читать их с помощью Files.readAllBytes(path)

Path path = Paths.get("path/to/file"); 
byte[] bytes = Files.readAllBytes(path); 

Другой вариант заключается сохранить байты как текст в файле разделенных , и использовать следующий код:

FileReader file = new FileReader("bytes.txt"); 
Scanner scanner = new Scanner(file); 
scanner.useDelimiter(","); 
ByteBuffer byteBuffer = new ByteBuffer(0); 
while (scanner.hasNext()) { 
    byteBuffer.append(Byte.decode(scanner.next().trim())); 
} 
scanner.close(); 

файл байт будет выглядеть следующим образом:

0x4D,0x5A,0x50,0x00,0x02