Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    32

    [Java] Socket InputStream in un file di testo

    Ho riversato l'InputStream proveniente da un socket in un BufferedReader e poi in un file di testo leggendo riga per riga del Buffer con nomebuffer.readline(string);
    Come mai il notepad non legge il carattere \n e visualizza il testo in modo sfalsato (togliendo a capo automatico naturalmente)?

    Lo stesso testo che mi deriva dal socket se lo riverso su System.out.println(str); si vede in modo esatto.



    Ora devo provare se leggendo riga per riga il file con FileReader me lo da esatto giusto? (come prova)

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Come dice documentazione di readLine() il metodo restituisce una riga alla volta SENZA i caratteri di andata a capo. Significa che se stai leggendo da X e scrivendo su Y, quando vai a scrivere devi essere te a (ri)mettere l'andata a capo.

    System.out.println() aggiunge l'andata a capo in automatico.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    32
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Come dice documentazione di readLine() il metodo restituisce una riga alla volta SENZA i caratteri di andata a capo. Significa che se stai leggendo da X e scrivendo su Y, quando vai a scrivere devi essere te a (ri)mettere l'andata a capo.

    System.out.println() aggiunge l'andata a capo in automatico.
    Esatto, infatti avevo pensato ad una cosa del genere anche senza leggere le specifiche della readLine() , ma ho appeso cosi la \n e non ha funzionato mo ti scrivo il codice e poi ci provo e vi dico se va.


    codice:
    try {
                        
                        while((str_rcv = din.readLine()) != null ) {
                        
                        
                        scrivilogFile.append(str_rcv + "\r\n");
                        //scrivilogFile.append("\n");
                        //System.out.println(str_rcv);
                        
                                            
                        }
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
    Come vedi prima appendevo solo \n ma non basta bisogna mettere \r\n

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da nobo_ Visualizza il messaggio
    Come vedi prima appendevo solo \n ma non basta bisogna mettere \r\n
    La sequenza di newline dipende dal sistema operativo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    32
    Quote Originariamente inviata da andbin Visualizza il messaggio
    La sequenza di newline dipende dal sistema operativo.
    Infatti lo stesso progetto compilato su Mac non mi dava lo stesso errore. Ecco perchè! Ora ho capito grazie.

    In C si usava la IF_DEF o una cosa simile per determinare il sistema operativo cmq...


    PS. sono a pag 112 del libro di De Sio.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da nobo_ Visualizza il messaggio
    In C si usava la IF_DEF o una cosa simile per determinare il sistema operativo cmq...
    Se vuoi scrivere la sequenza di newline appropriata per il sistema su cui sta girando l'applicazione:

    - i vari println() delle classi di I/O
    - i printf/format di String/classi di I/O specificando %n nel formato
    - newLine() di BufferedWriter
    - Il valore della system-property "line.separator" ( String newline = System.getProperty("line.separator"); )
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava 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 © 2025 vBulletin Solutions, Inc. All rights reserved.