Я избежал бы использования мега API как апачское свободное городское население. Это - упрощенная операция и его встроенный в JDK в новом пакете NIO. Это было отчасти уже связано с в предыдущем ответе, но ключевой метод в API NIO является новыми функциями "transferTo" и "transferFrom".
Одна из связанных статей показывает отличный способ о том, как интегрировать эту функцию в Ваш код, с помощью transferFrom:
public static void copyFile(File sourceFile, File destFile) throws IOException {
if(!destFile.exists()) {
destFile.createNewFile();
}
FileChannel source = null;
FileChannel destination = null;
try {
source = new FileInputStream(sourceFile).getChannel();
destination = new FileOutputStream(destFile).getChannel();
destination.transferFrom(source, 0, source.size());
}
finally {
if(source != null) {
source.close();
}
if(destination != null) {
destination.close();
}
}
}
Изучение NIO может быть немного хитрым, таким образом, Вы могли бы хотеть просто доверять этому механику перед уходом и попыткой изучить NIO в течение ночи. От личного опыта это может быть очень твердая вещь учиться, не имеете ли Вы опыта и были представлены IO через java.io потоки.
One возможность - использовать Enumerable.Select
:
byte[] bytes;
var shorts = bytes.Select(b => (short)b).ToArray();
Другой вариант - использовать Array.ConvertAll
:
byte[] bytes;
var shorts = Array.ConvertAll(bytes, b => (short)b);
short[] wordArray = Array.ConvertAll(byteArray, (b) => (short)b);
byte[] bytes;
var shorts = bytes.Select(n => System.Convert.ToInt16(n)).ToArray();
A shorthard is a compound of two bytes. If you are writing all the shorts to the file as true shorts then those conversions are wrong. You must use two bytes to get the true short value, using something like:
short s = (short)(bytes[0] | (bytes[1] << 8))