Вы профилировали код и фактически обнаружили, что это проблема? Что-то должно быть зациклено ... вы действительно уверены, что это узкое место в вашем коде?
Сказав все это, вы сможете использовать FloatBuffer, который, как я подозреваю, делает то, что вы хотите. К сожалению, JavaDoc у Sun не работает, поэтому я не могу легко ссылаться или просматривать документацию в данный момент.
Чтобы использовать FloatBuffer, вы, вероятно, захотите:
- Создать FileChannel, связанный с файлом (например, с FileInputStream.getChannel)
- Создать ByteBuffer
- Создание FloatBuffer, оборачивающего ByteBuffer, с помощью ByteBuffer.asFloatBuffer
- Чтение в ByteBuffer с FileChannel.read (byteBuffer)
- Чтение из буфера Float
Я не очень знаком / не знаком с java.nio, поэтому я надеюсь все это правильно - но, скорее всего, это будет довольно неудобно. Ваш текущий цикл почти наверняка проще, поэтому я настоятельно рекомендую вам сначала проверить его производительность! Возможно, вы захотите обернуть ваш текущий FileInputStream в BufferedInputStream, кстати.