Creare e scrivere file con java

di il
18 risposte

18 Risposte - Pagina 2

  • Re: Creare e scrivere file con java

    Ok ... allora ... credo di avercela fatta anche se ovviamente non è che sia il massimo come esercizio ... però l'ho fatto io, con l'aiuto dell'esercizio che m'è stato fatto prima ovviamente:
    package vacanze_estive_8_b;
    
    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    import javax.swing.JOptionPane;
    
    /**
     *
     * @author OOO
     */
    public class Vacanze_estive_8_b {
    
        public static void main(String[] args) throws IOException {
    
            String input = JOptionPane.showInputDialog("Inserisci la stringa da mettere nel file ");
            BufferedWriter scrivi = new BufferedWriter(new FileWriter("test.txt"));
            int c = 0, i = 0, cont = 0, numeroParole = 0;
    
            for (i = 1; i < input.length(); i++) {
                if (input.charAt(i) != ' ' && input.charAt(i - 1) == ' ') {
                    numeroParole++;
                }
            }
            if (input.charAt(0) != ' ') {
                numeroParole++;
            }
    
            String[] vettore = new String[numeroParole];
            for (i = 0; i < vettore.length; i++) {
                vettore[i] = "";
            }
    
            for (i = 0; i < input.length(); i++) {
                if (input.charAt(i) != ' ') {
                    vettore[c] += input.charAt(i);
                    cont = 0;
                } else if (cont == 0 && vettore[0] != "") {
                    c++;
                    cont++;
                }
            }
    
            for (i = 0; i < vettore.length; i++) {
                if (vettore[i] != "") {
                    scrivi.write(vettore[i] + "\r\n");
                }
            }
            scrivi.close();
        }
    
    }
    
    Su, dai. Datemi una caramellina e ditemi che son stata brava

    però le domande fatte prima ancora valgono, a che servono ste cose sotto?
    \\s
    \r
    writer.flush();
    throws IOException


    writer.close(); credo di aver capito a che serve, in pratica se non lo metti non ti scrive sul blocco note niente ... non so perché però...
    Probabilmente vi toccherà ripetervi nel spiegarmi le cose, io sono tarda se già non l'avete capito, mi spiace !
    Credo di aver capito vagamente adesso a che serve BufferedWriter...
    Ha detto il prof che l'anno scolastico che viene facciamo Object Oriented e m'ha detto un mio cmpagno di classe che è molto più difficile di sta roba, è così che voi sappiate?
  • Re: Creare e scrivere file con java

    Oh my God, credo di aver capito anche StringTokenizer, sempre vagamente eh...
    C'è un modo per migliorare questo esercizio?
    package vacanze_estive_8_c;
    
    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.StringTokenizer;
    import javax.swing.JOptionPane;
    
    /**
     *
     * @author OOO
     */
    public class Vacanze_estive_8_c {
    
        public static void main(String[] args) throws IOException {
    
            String input = JOptionPane.showInputDialog("Inserisci la stringa da mettere nel file.");
            BufferedWriter scrivi = new BufferedWriter(new FileWriter("test.txt"));
            StringTokenizer st = new StringTokenizer(input);
    
            while (st.hasMoreTokens()) {
                scrivi.write(st.nextToken() + "\r\n");
            }
    
            scrivi.close();
        }
    
    }
    
    le domande di prima sono ancora valide.
    Ma perché l'orologio del forum non funziona? Da me segna le 2.51 ma li segna le due ...
  • Re: Creare e scrivere file con java

    throws IOException

    Indica che la funzione può lanciare ("throws") un eccezione (in questo caso una IOException).
    Questo serve, insieme ad altri comandi, per gestire le eccezioni. Capirai meglio quando le studierai...
    \r
    Questo è un carattere "speciale", molto simile all' '\n'. Serve per riposizionare il cursore all'inizio della riga.

    spiegazione + dettagliata, da Wikipedia
    In computing, the carriage return is one of the control characters in ASCII code, Unicode, EBCDIC, and many other codes. It commands a printer, or other output system such as a display, to move the position of the cursor to the first position on the same line. It was mostly used along with line feed (LF), a move to the next line, so that together they start a new line. Together, this sequence can be referred to as CRLF.

    The carriage return and line feed functions were split for practical reasons:

    Carriage return by itself provided the ability to overprint the line with new text. This could be used to produce bold, underscores, accented characters, strike out text, and some composite symbols.
    Early mechanical printers were too slow to return the carriage in the time it took to process one character. Therefore the time spent sending the line feed was not wasted (often several more characters had to be sent to ensure the carriage return had happened before sending a printing character). This is why the carriage return was always sent first.
    It was then also possible to fit multiple line feed operations into the time taken for a single carriage return—for example for printing doublespaced text, headers/footers or title pages—to save print and transmission time without the need for additional circuitry or mechanical complexity to "filter out" spurious additional CR signals.
    As early as 1901 Baudot code contained separate carriage return and line feed characters.

    Many computer programs use the carriage return character, alone or with a line feed, to signal the end of a line of text, but other characters are also used for this function (see newline); others use it only for a paragraph break (a "hard return"). Some standards which introduce their own representations for line and paragraph control (for example HTML) and many programming languages treat carriage return and line feed as whitespace.

    In ASCII and Unicode, the carriage return is defined as 13 (or hexadecimal 0D); it may also be seen as control+M or ^M. In the C programming language, and many other languages influenced by it, \r denotes this character.[1]
    Se leggi i post precedenti miei e di andbin noterai che il loro uso non è sempre sicuro, ma per motivi didattici sul tuo pc vanno bene.

    writer.flush();
    da Oracle
    public void flush()
    throws IOExceptionFlushes the stream.
    Specified by:
    flush in interface Flushable
    Specified by:
    flush in class Writer
    Throws:
    IOException - If an I/O error occurs
    da una risposta di StackOverflow
    The BufferedWriter will already flush when it fills its buffer. From the docs of BufferedWriter.write:

    Ordinarily this method stores characters from the given array into this stream's buffer, flushing the buffer to the underlying stream as needed.

    (Emphasis mine.)

    The point of BufferedWriter is basically to consolidate lots of little writes into far fewer big writes, as that's usually more efficient (but more of a pain to code for). You shouldn't need to do anything special to get it to work properly though, other than making sure you flush it when you're finished with it - and calling close() will do this and flush/close the underlying writer anyway.

    In other words, relax - just write, write, write and close The only time you normally need to call flush manually is if you really, really need the data to be on disk now. (For instance, if you have a perpetual logger, you might want to flush it every so often so that whoever's reading the logs doesn't need to wait until the buffer's full before they can see new log entries!)

    writer.close();
    in parole povere finisce di scrivere sul file e lo chiude correttamente.
    credo di aver capito a che serve, in pratica se non lo metti non ti scrive sul blocco note niente ... non so perché però...
    E' come se tu aprissi un file con il blocco note, ci scrivessi sopra e poi chiudessi senza salvare. L'azione del "chiudere e salvare" è svolta dal metodo .close()

    da Oracle
    public void close()
    throws IOExceptionDescription copied from class: Writer
    Closes the stream, flushing it first. Once the stream has been closed, further write() or flush() invocations will cause an IOException to be thrown. Closing a previously closed stream has no effect.
    Specified by:
    close in interface Closeable
    Specified by:
    close in interface AutoCloseable
    Specified by:
    close in class Writer
    Throws:
    IOException - If an I/O error occurs

    Ha detto il prof che l'anno scolastico che viene facciamo Object Oriented e m'ha detto un mio cmpagno di classe che è molto più difficile di sta roba, è così che voi sappiate?
    Object Oriented significa che si usano gli Oggetti ( classi ). A mio parere è più semplice, ma necessita di una buona spieagzione...

  • Re: Creare e scrivere file con java

    ale99 ha scritto:


    A mio parere è più semplice, ma necessita di una buona spieagzione...

    Speriamo sia così, io non so come farò l'anno prossimo sto veramente facendo fatica in tutte le mateire e sono stufa, in più ho una materia a settembre mi hanno scritto "studio individuale" avevo studiato un sacco tutto l'anno, ci vuole qualcuno che mi spieghi non capisco nulla. (la materia che ho giù è tecnologie)
Devi accedere o registrarti per scrivere nel forum
18 risposte