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.
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.
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??
Cris,
guarda la FAD!!!
ahahahahaaha
![]()
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.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Avevo già provato, ma il problema permane comunque.
Chiedo scusa, probabilmente alla prima prova dormivo.
Il problema si è risolto col tuo consiglio, grazie.
Adesso mi occorre un altro aiuto,
sai dirmi come cancellare il contenuto di un file senza cancellare il file vero e proprio??
A me questo codice funziona perfettamente:
Ciao.codice: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(); } }![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
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 [].
Ed è ovvio: una serie di caratteri '\0' non equivale all'assenza di caratteri!
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza