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

    Println() su file di testo non scrive tutti i caratteri

    Ciao a tutti.

    Ho una stringa abbastanza voluminosa (96.922 caratteri).
    La scrivo su un file:

    oggettoPrintWriter.println(stringa)

    Mi ritrovo sul file invece 90.112 caratteri (nell'interruzione non c'è nessun carattere speciale)

    Con 'System.out.println(stringa)' a consolle riesco invece a vedere la stringa tutta per intero.


    Possibile che per assurdo ci sia una limitazione di caratteri?
    "From a programmer's point of view the
    user is a peripheral that types when
    you issue a read quest."

    -Peter Williams

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Bè dalle poche informazioni che dai è praticamente impossibile aiutarti...prova a postare il codice che hai utilizzato...
    Non credo sia un problema di "limitazione" ma sarà qualcosa nel codice a creare il problema...

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Tiro ad indovinare: non fai né il flush(), né la close() del file... o forse solo la seconda.

    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

  4. #4
    Non c'è moltissimo nel codice:

    riga = inInse.readLine(); //estrae prima riga
    riga = riga + "\r\n" + inInse.readLine(); //estrae e accoda seconda riga


    inserzione = riga + ";" + str+"\r\n";
    System.out.println(inserzione); //qui la stringa viene stampata per intero
    pw.println(inserzione); // qui no


    la variabile str viene troncata come si può vedere qui sotto:

    da così:
    </SPAN></SPAN><SPAN style=""LINE-HEIGHT: 115%25; FONT-FAMILY: 'Arial','sans-serif'; COLOR: black; FONT-SIZE: 10pt; mso-themecolor: text1"">Esercizio del Diritto di Recesso<o....

    a così:
    </SPAN></SPAN><SPAN style=""LINE-HEIGHT: 115%25; FONT-FAMILY: 'Arial','sans-serif'; COLOR: black; FONT-SIZE: 10pt; mso-themecolor:


    Non so che altro potrei aggiungere...
    "From a programmer's point of view the
    user is a peripheral that types when
    you issue a read quest."

    -Peter Williams

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da Fenix872
    Non so che altro potrei aggiungere...
    Il flush() e la close() del file...


    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

  6. #6
    Indovinata!

    Ma scusate la nubbità: come mai ho bisogno di un flush() o di un close() e non mi basta il println?
    "From a programmer's point of view the
    user is a peripheral that types when
    you issue a read quest."

    -Peter Williams

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da Fenix872
    Indovinata!

    Ma scusate la nubbità: come mai ho bisogno di un flush() o di un close() e non mi basta il println?
    Perchè nessuno ti garantisce che il sistema sottostante non stia utilizzando sistemi di buffering... praticamente, in tutti i sistemi al giorno d'oggi viene utilizzato il buffering.
    La close, invece, va sempre fatta... altrimenti chi dovrebbe chiudere le risorse?

    Quindi è compito del programmatore assicurarsi che i dati vengano flushati e che la struttura venga chiusa.

    La documentazione di PrintWriter è chiarissima. Non so di preciso quale costruttore tu abbia usato per creare l'oggetto PrintWriter, ma di sicuro non hai usato quello con il line-flushing:

    PrintWriter(File file)
    Creates a new PrintWriter, without automatic line flushing, with the specified file.
    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

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Originariamente inviato da Fenix872
    Indovinata!

    Ma scusate la nubbità: come mai ho bisogno di un flush() o di un close() e non mi basta il println?
    Leggi la documentazione di quello che stai usando (suppongo PrintWriter), c'è scritto quello che cerchi. Di default non avviene il flush ad ogni operazione.
    Il close va sempre fatto su tutti gli stream.

    EDIT: preceduto

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.