Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [Java] Salvare e Leggere testo in una TextArea

    Ciao a tutti,
    mi trovo col problema di dover salvare e leggere il contenuto di una textArea in un file di testo.
    Insieme alla textArea nello stesso file devo salvare anche i contenuti di altri campi JTextField; il problema nasce con i separatori.

    SOLUZIONE 1 (sbagliata):
    Salvo il contenuto dei campi, riga per riga separandoli con un newLine.
    Leggendo il file con in.readLine, se la textarea contiene un ritorno a capo il programma ovviamente lo vede come un nuovo campo.

    SOLUZIONE 2 (sbagliata):
    Invece del newLine metto come separatore di campi un carattere tipo la barra verticale |.
    Leggo il file, utilizzando un tokenizer (ho trovato un post su questo forum che lo spiegava).
    Quindi, dovrei leggere prima il contenuto del file con readLine() e poi spezzettare la stringa.
    Il problema è che se la textarea contiene un ritorno a capo, readLine non legge tutto il file su una sola riga e mi trovo a spezzettare una stringa incompleta.

    Secondo la vostra esperienza qual è la soluzione da adottare per questo problema?

    grazie!

  2. #2
    Crei un oggetto che rappreresta lo stato dei campi di testo (per esempio un array dove ficchi tutte le stringhe da salvare) e lasci che la serializzazione faccia il resto per te.
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  3. #3
    cioè? potresti essere più specifico?
    Salvo i campi con un separatore come ho fatto poc'anzi oppure devo usare altri metodi?

  4. #4
    No, la serializzazione fa tutto da sola.
    Se vuoi farlo da te, potresti usare il carattere ASCII 0 come separatore, ma non so quanto sia agevole.

    codice:
            String[] stato = new String[xxx];
            stato[0] = MiaAreaTesto.getText();
            stato[1] = MioCampoTesto.getText();
    
    ...
    
            ObjectOutputStream out = null;
            try {
                try {
                    out = new ObjectOutputStream(new FileOutputStream("nomedelfile"));
                    out.writeObject(stato);
                } finally {
                    out.close();
                }
            } catch (Throwable t) {t.printStackTrace();};
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  5. #5
    grazie mille sei stato utilissimo!


  6. #6
    Prego.

    Quando vai a rileggere ricordati di castare a String[], non a String!
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  7. #7
    Originariamente inviato da dekdek
    Prego.

    Quando vai a rileggere ricordati di castare a String[], non a String!
    infatti me ne sn accorto sulla mia pelle!


  8. #8
    Capita...
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.