Visualizzazione dei risultati da 1 a 6 su 6

Hybrid View

  1. #1
    Quote Originariamente inviata da andbin Visualizza il messaggio
    RandomAccessFile va bene solo se il file è "binario", nel senso che contiene dati non testuali, con byte arbitrari. E in più se ti serve l'accesso "casuale".
    Se devi scrivere un file di testo "puro", RandomAccessFile NON va bene. E tanto meno writeUTF, questo non scrive un testo "puro" perché inserisce all'inizio un dato binario riguardante il numero di byte scritti per il String.

    Se vuoi scrivere file di testo "puro", ci sono FileWriter (usa però il charset di default in modo fisso), oppure FileOutputStream (da incapsulare come minimo in OutputStreamWriter, che permette anche di specificare un charset).
    E se vuoi "appendere" invece di sovrascrivere, nota che alcuni costruttori di FileWriter/FileOutputStream hanno il flag "append".
    ah ecco, grazie

    ma come mai
    codice:
    try {
       while (rafStream.getFilePointer() < rafStream.length() ) {
          System.out.println( rafStream.readLine() );
       }
    }
    catch // ....
    funziona senza alcun problema su un generico file di testo scritto da me?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da mastodilu Visualizza il messaggio
    ma come mai
    codice:
    try {
       while (rafStream.getFilePointer() < rafStream.length() ) {
          System.out.println( rafStream.readLine() );
       }
    }
    catch // ....
    funziona senza alcun problema su un generico file di testo scritto da me?
    Come caso specifico, può funzionare ma solo se il file usa un charset single-byte (es. ASCII o al limite ISO-8859-1). Perché RandomAccessFile non ha alcuna nozione dei charset e il suo readLine legge solo byte e li porta a char mettendo gli 8 bit "alti" del char a 0. Quindi è molto limitato.

    In generale, se vuoi trattare file di testo "puro", per cortesia, ignora RandomAccessFile.
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.