PDA

Visualizza la versione completa : [java] lettura e scrittura random su file


alextg82
09-12-2004, 09:55
Salve a tutti,
qualcuno potrebbe spiegarmi come si realizza la lettura e la scrittura su file ad accesso casuale, ovvero a partire da un byte specifico e non obbligatoriamente a partire dall'inizio del file???

Grazie molte.

alextg82
09-12-2004, 10:46
Ho provato con questo codice spulciato da Internet:

[code]

/* SCRITTURA */
out = new RandomAccessFile(_nomedelfile_,_opzionidiaccesso_) ;
out.seek(_posizionenelfile_);
out.writeChars(what); //che scrive la stringa what sul file

/* LETTURA */

in = new RandomAccessFile(_nomedelfile_,_opzionidiaccesso_) ;
in.seek(_posizionenelfile_);
what=in.readLine(); //che scrive il contenuto del file su what

[code]

ma, senza che me lo sappia spiegare, all'interno del file, una stringa, ad esempio ciao, mi viene scritta con degli spazi intermedi, ossia

c i a o e NON ciao.

La lettura di conseguenza mi produce la stampa di c[]i[]a[]o[].

Qualcuno sa aiutarmi??

luketto
09-12-2004, 10:50
Cris,

guarda la FAD!!!

ahahahahaaha

:dh:

LeleFT
09-12-2004, 10:50
Il problema degli spazi dovuto al fatto che Java utilizza i caratteri UNICODE che occupano 2 byte al posto di uno: al posto del metodo writeChars() che hai usato, prova ad utilizzare writeBytes().


Ciao. :ciauz:

alextg82
09-12-2004, 10:56
Avevo gi provato, ma il problema permane comunque.

alextg82
09-12-2004, 11:03
Chiedo scusa, probabilmente alla prima prova dormivo.

Il problema si risolto col tuo consiglio, grazie.

alextg82
09-12-2004, 11:06
Adesso mi occorre un altro aiuto,

sai dirmi come cancellare il contenuto di un file senza cancellare il file vero e proprio??

LeleFT
09-12-2004, 11:09
A me questo codice funziona perfettamente:


import java.io.*;
class Prova {
public static void main(String [] a) throws Exception {
RandomAccessFile raf = new RandomAccessFile("MioFile.DAT", "rw");
raf.seek(27L);
raf.writeBytes("Ciao");
raf.close();
}
}
Ciao. :ciauz:

alextg82
09-12-2004, 11:31
Ho provato a riempire il file per tutta la sua lunghezza con dei caratteri vuoti (='\0'), ma in tal modo il file non viene svuotato, semplicemente il contenuto sostituito con una serie di [].

LeleFT
09-12-2004, 11:32
Ed ovvio: una serie di caratteri '\0' non equivale all'assenza di caratteri! :)


Ciao. :ciauz:

Loading