RandomAccessFile.setLenght, Linux e VFAT.

Nel mio lento ma continuo passaggio a Linux come ambiente di sviluppo (oltre che sistema di tutti i giorni)  mi imbatto spesso in problemi vari di convivenza dei due sistemoni (Micro$ e Linux).

Praticamente usando una modalità dual boot per poter switchare in modo trasparente da uno all’altro mi sono configurato una partizione FAT32 di condivisione per poter modificare e aggiornare a piacimento ogni file.

Per poter utilizzare Eclipse sullo stesso workspace quindi ho spostato la mia area Develop (che contiene tutti i workspace di Eclipse)  sulla sopra citata partizione, in modo che anche se non committo sul repository degli sviluppi parziali, nel caso di switch sono completamente aggiornato con le mie ultime modifiche.

Peccato che tutto funzioni benissimo, tranne il fatto che nel task di ant del setup della piattaforma di test, ci sia un modulo che non posso toccare che fa riferimento a questo pezzo di codice:

RandomAccessFile randomAccessFile = new RandomAccessFile(file, “rw”);

randomAccessFile.setLength(…);

Bene peccato che questo “inutile” e ingenuo pezzo di codice manda in eccezione la VM di linux in determinate condizioni con questo bellissimo stacktrace:

java.io.IOException: Operation not permitted
at java.io.RandomAccessFile.setLength(Native Method)
at file.TestLenght.main(TestLenght.java:20)

Googlando un pò ho scoperto che l’arcano è che il filesystem vfat non supporta il settaggio della dimensione dei file, che non è una sorpresa secondo qualcuno visto che non supporta nemmeno i sparse files.

Ho trovato anche una bella discussione a riguardo sui gruppi di google.

Sembra che la libreriadi Java IO sotto Linux usi ftruncate per espandere un file, e questa modalità funziona su tutti i filesystems tranne VFAT.

Visto che Win32 supporta  lo stesso metodo sui filesystems FAT l’implementazione sotto Linux dovrebbe trovare qualche altro modo per espandere la dimensione di un file sotto VFAT.

Quindi visto che non posso mettere mano a quel codice di utilità non mi resta altro che migrare il mio workspace sotto ext3, e ovviare al problema eliminando la causa: non sviluppare più sotto Windows😀

Mazi

One Response

  1. Approvo in pieno la scelta🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: