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

    scrivere del teso alla fine di un file .txt

    ciao a tutti !!!

    Ragazzi ho un problema:

    dovrei scivere delle stringhe alla fine di un file di testo, ma proprio non ci riesco in quanto sovrascrivo sempre quello che già ho.....

    come posso aggiungere delle stringhe alla fine di un file .txt non vuoto?


    grazie a tutti!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    come si fa normalmente: si legge tutto e si riscrive il vecchio contenuto + il contenuto da aggiungere in coda.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: scrivere del teso alla fine di un file .txt

    Originariamente inviato da darietto83
    dovrei scivere delle stringhe alla fine di un file di testo, ma proprio non ci riesco in quanto sovrascrivo sempre quello che già ho.....
    java.io.FileOutputStream ha due costruttori che hanno un parametro boolean append. Prova ad indovinare a cosa serve.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013

    Re: Re: scrivere del teso alla fine di un file .txt

    Originariamente inviato da andbin
    java.io.FileOutputStream ha due costruttori che hanno un parametro boolean append. Prova ad indovinare a cosa serve.
    mi mangio una merda
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    prima di tutto grazie delle vostre risposte,ma:

    per quanto riguarda la prima soluzione, misembra efficace ma non efficente in quanto dovrei continuamente leggere tutto il file e riscriverlo....

    per quanto riguarda la classe FileOutputStream (non si possono conoscere tutte le classi di java) è vero che ha diversi costruttori, ma non ha dei metodi di scrittura adeguati alla scrittura di stringhe in quanto il metodo write è ridefinito in:

    void write(byte[] b)
    Writes b.length bytes from the specified byte array to this file output stream.

    void write(byte[] b, int off, int len)
    Writes len bytes from the specified byte array starting at offset off to this file output stream.

    void write(int b)
    Writes the specified byte to this file output stream.

    e a me serve un metodo che mi permette di scrivere una stringa....
    magari invece di fare allusioni a quello che serve , se sapete come si può fare me lo potreste spiegare? magari facendo qualke esempio con del codice?


    grazie ancora

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da darietto83
    per quanto riguarda la classe FileOutputStream (non si possono conoscere tutte le classi di java) è vero che ha diversi costruttori, ma non ha dei metodi di scrittura adeguati alla scrittura di stringhe in quanto il metodo write è ridefinito in:

    void write(byte[] b)
    Writes b.length bytes from the specified byte array to this file output stream.

    void write(byte[] b, int off, int len)
    Writes len bytes from the specified byte array starting at offset off to this file output stream.

    void write(int b)
    Writes the specified byte to this file output stream.

    e a me serve un metodo che mi permette di scrivere una stringa....
    magari invece di fare allusioni a quello che serve , se sapete come si può fare me lo potreste spiegare? magari facendo qualke esempio con del codice?
    Non è questione di fare o non fare allusioni. Partiamo dal fatto che Java ha una ottima (e ripeto ottima) documentazione relativa alle API del framework. E c'è anche un ottimo tutorial fornito proprio dalla Sun. Basta solamente leggere e documentarsi come si deve.

    Il fatto che FileOutputStream abbia solo metodi write() che operano solo con i byte, non significa che la devi lasciare perdere. Le classi nel package java.io sono davvero molte e ognuna è focalizzata su un aspetto ben specifico dell'I/O. Le classi di I/O si dividono in due grosse categorie: gli Stream e i Reader/Writer. Gli Stream sono orientati al trattamento di byte "crudi", mentre i Reader/Writer sono orientati al trattamento di caratteri (char).

    La prassi comune è di effettuare quello che in gergo si chiama wrapping (o detto anche chaining). Cioè si può prendere ad esempio un oggetto FileOutputStream e "avvolgerlo" dentro un altro oggetto come un PrintWriter.

    codice:
    FileOutputStream fos = new FileOutputStream ("pippo.txt", true);  // append
    PrintWriter pw = new PrintWriter (fos);
    
    pw.println ("Ciao, stringa aggiunta al file");
    pw.close ();
    È semplice, no? (chiaramente c'è da gestire le possibili eccezioni)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Gli outputStream sono oggetti adatti a scrivere i byte, per essere utilizzati con stringhe, vanno incapsulati in oggetti che hanno un grado di astrazione maggiore (Ad esempio PrintWriter).
    codice:
    PrintWriter out = new PrintWriter(tuoFileOutputStream);
    out.print("Sono una stringa");

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Oppure, se il wrapping è un'idea troppo complicata, andare a vedere se esiste qualcosa in String che converta una String in un array di byte

    codice:
    FileOutputStream fos = new FileOutputStream(new File("tuofile.txt"), true);
    String appesa ="\nCiao sono Appesa";
    fos.write(appesa.getBytes());
    Anche se personalmente preferisco il wrapping che i colleghi ti hanno illustrato.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.