Visualizzazione dei risultati da 1 a 10 su 11

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2016
    Messaggi
    11
    Grazie andy_concept...impressionante con NIO! ...ma FileOutputStream va bene solo per i file in formato testo..io sto' lavorando col formato binario...comunque non voglio approfittare troppo della vostra disponibilita'....puoi consigliarmi un manuale di Java .. o documentazione reperibile sul web...dove poter studiare tutte queste belle classi di I/O...

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da JFrank0 Visualizza il messaggio
    ma FileOutputStream va bene solo per i file in formato testo..
    No, FileOutputStream va bene per "qualunque" tipo di file. FileOutputStream sa fare solamente una cosa: scrivere byte su un file nel file-system. Non sa fare altro, non sa "bufferizzare", non sa nulla di "caratteri" di testo. Solo byte e basta. Ma cosa siano questi byte, è assolutamente indifferente per FileOutputStream ... dipende da cosa c'è (eventualmente) "al di sopra" del FileOutputStream.
    Se la classe decoratore che hai al livello più alto è es. DataOutputStream è perché vuoi scrivere un file binario e più precisamente vuoi scrivere facilmente e comodamente valori primitivi composti da più byte come short, int, long ecc...
    Se invece la catena delle classi di I/O la fai ad esempio con: BufferedWriter -> OutputStreamWriter -> FileOutputStream allora è perché vuoi scrivere un file di testo (possibilmente anche con un charset specifico) e quasi certamente fatto "a righe".

    FileOutputStream è solo un "componente" al livello più basso, non incapsula un'altra classe di I/O e va direttamente sul file-system. Ma come lo usi dipende dai "decoratori" che metti uno sopra l'altro al di sopra di FileOutputStream.

    Quote Originariamente inviata da JFrank0 Visualizza il messaggio
    puoi consigliarmi un manuale di Java .. o documentazione reperibile sul web...dove poter studiare tutte queste belle classi di I/O...
    Il tutorial ufficiale Oracle

    Java I/O, 2nd Edition - O'Reilly Media
    Ultima modifica di andbin; 08-10-2016 a 22:59
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2016
    Messaggi
    11
    ...io sto' studiando su Goodrich Tamassia.....ma il tutorial officiale Oracle sarà di certo piu' completo.... nonostante abbia letto solo i primi 2 capitoli del mio libro...sono riuscito a tradurre completamente dal C, compilare ed eseguire
    un programma a cui ho lavorato ultimamente che implementa una nuova struttura dati per la gestione di grandi volumi di dati sulla memoria esterna; siccome io non ho studiato Informatica (laurea in Fisica è il mio titolo di studio) e ho imparato da solo a programmare in C e C++, per avere una valutazione professionale di questo lavoro ne ho parlato con alcuni Prof Universitari di Ing.Informatica...tutti mi hanno giudicato il programma molto interessante dal punto di vista teorico...soprattutto in relazione alla quantita' di dati che si possono gestire su un computer dello standard commerciale, senza dotazione di hardware partcolarmente potente; in particolare uno di loro mi ha anche detto che questo programma opportunamente modificato per farlo girare in parallelo (su architetture cluster) potrebbe essere applicato per la gestione dei BIG DATA. Allego di seguito una breve descrizione delle principali caratteristiche e funzionalità del programma e se a qualcuno del Forum interessa mi puo' ovviamente contattare per ulteriori dettagli
    Grazie a Tutti!!


    Ultima modifica di LeleFT; 10-10-2016 a 10:18

  4. #4
    Quote Originariamente inviata da JFrank0 Visualizza il messaggio
    ...ma FileOutputStream va bene solo per i file in formato testo..io sto' lavorando col formato binario..
    Similmente a java.io.DataOutputStream.writeInt(int v) sul BufferedOutputStream (che hai usato), con ByteBuffer puoi usare java.nio.ByteBuffer.putInt(int value) che andrai poi (periodicamente) a scrivere java.nio.channels.FileChannel.write(ByteBuffer src). Sul tutorial potrai vedere di che si tratta.
    Era per dire che se ti serve più velocità (magari 8-10 min ti vanno già bene), potresti dare un'occhiata anche in quella direzione: sostanzialmente, NIO e direct buffer (la dimensione più ottimale del buffer la troverai tu).
    Togliendo i print e un contatore, il mio tempo è sceso a 39 secondi (e il file da 8GB è scritto e sta lì!).
    In bocca al lupo per il tuo progetto

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.