2010-12-05 10 views
6

Estoy ejecutando un programa que necesita acceso aleatorio a un archivo muy grande (aproximadamente 151 gigabytes). Me he dado cuenta que cada vez que corre en una de las máquinas MacPro en el laboratorio Orchard (detalles en http://inst.eecs.berkeley.edu/cgi-bin/clients.cgi?choice=6a&string=), el programa intenta leer una parte específica del archivo y se bloquea con un error del sistema de archivos:java.io.RandomAccessFile Argumento no válido para archivos grandes en mac

java.io.IOException: Invalid argument 
    at java.io.RandomAccessFile.readBytes(Native Method) 
    at java.io.RandomAccessFile.read(RandomAccessFile.java:322) 

Solo estoy usando la clase 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); 

Sucede en el mismo lugar exacto para el mismo rango exacto de bytes cada vez que no importa cuál de los equipos del laboratorio de la huerta que uso.

He probado este código en las computadoras DELL que ejecutan Debian Linux y no he tenido este problema.

+0

¿Qué es lo que quieres? ¿Explicación o solución? Parece que podría estar relacionado con esto: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4481658 – thejh

+1

@thejh 2001, Windows 95 vs 2010, Mac ... Es similar. – khachik

+0

Tal vez las transmisiones pueden ayudar. –

Respuesta

1

Debe usar el comando de Linux "dd" para verificar si el archivo es realmente legible en la ubicación especificada. Supongo que el archivo está en una unidad de red en el laboratorio MAC, y si accede a su copia del archivo en la estación de trabajo Linux de Dell, no obtendrá este error porque los discos DELL no están rotos.

Cuestiones relacionadas