Je cours un programme qui nécessite un accès aléatoire à un très gros fichier (environ 151 gigaoctets). Je l'ai constaté que chaque fois qu'il fonctionne sur l'une des machines MacPro dans le laboratoire d'Orchard (détails à http://inst.eecs.berkeley.edu/cgi-bin/clients.cgi?choice=6a&string=), le programme tente de lire une partie spécifique du fichier et se bloque avec une erreur du système de fichiers:java.io.RandomAccessFile Argument non valide pour les fichiers volumineux sur mac
java.io.IOException: Invalid argument
at java.io.RandomAccessFile.readBytes(Native Method)
at java.io.RandomAccessFile.read(RandomAccessFile.java:322)
J'utilise simplement la classe RandomAccessFile.
RandomAccessFile fd;
//...Initialized and already used fd with
//no problems for larger locations as well
//location == 155587178230
//numBytes == 15492560
//off == 0
//arr.length == 15492560
fd.seek(location);
fd.read(arr, off, numBytes);
Il arrive au même endroit exactement pour la même plage exacte d'octets à chaque fois, peu importe lequel des ordinateurs de laboratoire d'Orchard que j'utilise.
J'ai testé ce code sur des ordinateurs DELL exécutant Debian Linux et je n'ai pas eu ce problème.
Que voulez-vous? Explication ou solution? On dirait qu'il pourrait être lié à ceci: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4481658 – thejh
@thejh 2001, Windows 95 vs 2010, Mac ... Est similaire cependant. – khachik
Peut-être que les flux peuvent aider. –