He estado tratando de escribir un código Java muy rápido que tiene que hacer un montón de E/S. Estoy usando un archivo de mapeado de memoria que devuelve un ByteBuffer:Archivos mapeados en memoria en Java
public static ByteBuffer byteBufferForFile(String fname){
FileChannel vectorChannel;
ByteBuffer vector;
try {
vectorChannel = new FileInputStream(fname).getChannel();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
return null;
}
try {
vector = vectorChannel.map(MapMode.READ_ONLY,0,vectorChannel.size());
} catch (IOException e) {
e.printStackTrace();
return null;
}
return vector;
}
El problema que estoy teniendo es que el método ByteBuffer .array() (que debe volver a [] matriz de bytes) no funciona para archivos de solo lectura. Quiero escribir mi código para que funcione con los búferes de memoria construidos en la memoria y los búferes leídos desde el disco. Pero no quiero ajustar todos mis buffers a una función ByteBuffer.wrap() porque me preocupa que esto disminuya la velocidad. Así que he estado escribiendo dos versiones de todo, una que toma un byte [], la otra que toma un ByteBuffer.
¿Debo simplemente envolver todo? ¿O debería escribir todo dos veces?
punto de referencia y publicar los resultados, incluso si un experto puede indicarle en una dirección que la dirección podría no funcionar para su situación. ¡¡¡¡Punto de referencia!!!! – basszero