Странный бред после Файла IO - PullRequest
1 голос
/ 14 сентября 2011

Я пишу апплет для переноса проприетарного .dll, который можно использовать в браузере.Для этого я использую JNA.DLL подключается к периферийному устройству проверки сканера и может извлекать изображения из памяти устройства.

Я должен сделать вызов API Windows в Java, используя JNA, чтобы получить изображение:

// DEVICE is the JNA Library interface

HANDLEByReference img = new HANDLEByReference();
File outfile = new File("my_image.bmp");

DEVICE.saveImage(img.getValue(), outfile.getName().getBytes());

Когда код сохраняет изображение, я получаю имя с именем вроде:

C:\Users\user\workspace\JavaProject\bin\my_image.bmpó_¯=Pá

обратите внимание на тарабарщину в конце

Возвращает ли Javaмассив byte [] с нулевым символом в конце при вызове getBytes () для строки?

1 Ответ

1 голос
/ 14 сентября 2011

Нет, String.getBytes() , просто возвращает байты в закодированной форме строки.

Обратите внимание, что он также использует кодировку по умолчанию для платформы, если вы не указали кодировку, и что значение по умолчанию может не соответствовать желаемому.

Если вам нужен массив с байтом «0» в конце, вы можете использовать:

byte[] data = outfile.getName().getBytes(encoding);
byte[] padded = new byte[data.length + 1];
System.arraycopy(data, 0, padded, 0, data.length);
...