Fichiers mappés en mémoire en Java

J'ai essayé d'écrire quelques très rapide de code Java qui doit faire beaucoup d'I/O. je suis en utilisant un fichier mappé en mémoire qui renvoie un ByteBuffer:

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;
}

Le problème que je rencontre est que le ByteBuffer .array (), méthode (qui doit retourner un byte[] tableau) ne fonctionne pas pour les fichiers en lecture seule. Je veux écrire mon code pour qu'il fonctionne avec de la mémoire tampon construit dans la mémoire et les tampons de lecture à partir du disque. Mais je ne veux pas de l'emballage de tous mes tampons un ByteBuffer.wrap (), car je crains que cela va ralentir les choses. Donc, j'ai écrit deux versions de tout, celui qui prend un byte[], l'autre qui prend un ByteBuffer.

Dois-je juste envelopper tout? Ou devrais-je double tout écrire?

de référence et d'afficher les résultats, même si un expert peut vous diriger dans une direction que la direction pourrait ne pas fonctionner pour votre situation. Référence!!!!

OriginalL'auteur vy32 | 2009-06-21