Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Scrivere File CSV

  1. #1

    Scrivere File CSV

    Salve, vorrei capire come faccio a salvare nel file le righe. Per esempio io nel codice ne salvo una sola, poi scrivendone un altra, mi si cancella la precedente come faccio. Senza ArrayList.!

    codice:
    import java.awt.event.*;
    import java.awt.*;
    import javax.swing.*;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    
    public class Grafica extends JFrame implements ItemListener, ActionListener
    {
        JTextArea area1 = new JTextArea();
        JTextArea area2 = new JTextArea();
        JTextArea area3 = new JTextArea();
        Label titolo1 = new Label("Nome:");
        Label titolo2 = new Label("Quantità: ");
        Label titolo3 = new Label("Prezzo: ");
        Label titolo4 = new Label();
        JButton aggiungi = new JButton("Aggiungi");
    
    
       public Grafica()
       {   
           
            //Aggiungo area di testo e titolo di Nome
            this.add(area1);
            area1.setBounds(200, 20, 170, 50);
            add(titolo1);
            titolo1.setBounds(120,20,170,50);
            titolo1.setVisible(true);
            
            //Aggiungo area di testo e titolo di Quantità
            this.add(area2);
            area2.setBounds(200, 100, 170, 50);
            add(titolo2);
            titolo2.setBounds(120,100,170,50);
            titolo2.setVisible(true);
            
            //Aggiungo area di testo e titolo di Prezzo
            this.add(area3);
            area3.setBounds(200, 200, 170, 50);
            add(titolo3);
            titolo3.setBounds(120,200,170,50);
            titolo3.setVisible(true);
    
    
            //Aggiungo testo 
            add(titolo4);
            titolo4.setVisible(false);
            
            //Aggiungo Bottone
            this.add(aggiungi);
            aggiungi.setBounds(200,320,100,60);
            aggiungi.addActionListener(this);
            aggiungi.setVisible(true);
            
            add(titolo4);
            titolo4.setVisible(false);
    
    
            //Set finestra
            setTitle("Scontrino");
            setLocation(200,200);
            setSize(430, 500);
            setVisible(true);
    
    
       }
       
       public static void main(String [] args)
       {
           new Grafica();
       }
       
       public void itemStateChanged(ItemEvent e)
       {
          
       }
        
       public void actionPerformed(ActionEvent e)
       {
           //String x = area1.getText();
           String x = area1.toString();
           String y = area2.getText();
           String z = area3.getText();
           
           if(e.getSource() == aggiungi)
           {
               if(x.trim().length() == 0)
               {
                   JOptionPane.showMessageDialog(null,"Insertire il nome del prodotto per continuare.!","Finestra di messggio",JOptionPane .INFORMATION_MESSAGE);
               }
               
               if(y.trim().length() == 0)
               {
                   JOptionPane.showMessageDialog(null,"Insertire la quantità del prodotto per continuare.!","Finestra di messggio",JOptionPane .INFORMATION_MESSAGE);
               }
               
               if(z.trim().length() == 0)
               {
                   JOptionPane.showMessageDialog(null,"Insertire il prezzo del prodotto per continuare.!","Finestra di messggio",JOptionPane .INFORMATION_MESSAGE);
               }
               
               try
               {
                  FileWriter fw = new FileWriter("ciaobello.csv");
                  PrintWriter out = new PrintWriter(fw);
                  String [] prodotto = new String [100];
    
    
                   out.print("Nome"); // Prima Riga e prima Colonna
                   out.print(";");
                   out.print("Quantità"); // Prima Riga e seconda Colonna
                   out.print(";");
                   out.println("Prezzo"); // Prima Riga e terza Colonna
    
    
                   out.print(area1.getText());  // Seconda Riga e prima Colonna
                   out.print(";");
                   out.print(area2.getText()); // Seconda Riga e seconda Colonna
                   out.print(";");
                   out.print(area3.getText()); // Seconda Riga e terza Colonna
                      
                   out.flush();
                       
                   out.close();
                       
                   fw.close();
                   
                  if(x.trim().length() != 0 && y.trim().length() != 0 && z.trim().length() != 0)
                  {
                      JOptionPane.showMessageDialog(null,"Il prodotto è stato inserito con successo.!","Finestra di messggio",JOptionPane .INFORMATION_MESSAGE);
                  }
               }
               catch(IOException ex)
               {
                   ex.printStackTrace();
               }
           }
       }   
      
    }
    Ultima modifica di LeleFT; 21-03-2017 a 19:22 Motivo: Aggiunti i tag CODE

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Mikele99 Visualizza il messaggio
    Salve, vorrei capire come faccio a salvare nel file le righe. Per esempio io nel codice ne salvo una sola, poi scrivendone un altra, mi si cancella la precedente
    Scusa ma come ... la cancella? Quanto hai scritto è di per sé corretto (c'è solo una piccola questione non grave: visto che PrintWriter incapsula il FileWriter, basta solo out.close(), non c'è bisogno di fare anche fw.close() ).

    Poi comunque c'è da dire che stai inserendo del testo da JTextArea, che può andare a capo. Ma in un CSV non puoi andare a capo così come niente ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Vorrei Spiegarmi meglio.! Nel file quando inserisco il prodotto per esempio: (Carne 4 1,50) mi funziona il problema sale quando provo a scrivere un'altra riga per esempio (Mela 2 0,80), mi viene salvato nel file soltanto la seconda riga no tutte e due.! Spero che tu abbia capito
    Ultima modifica di Mikele99; 21-03-2017 a 18:56

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Mikele99 Visualizza il messaggio
    Nel file quando inserisco il prodotto per esempio: (Carne 4 1,50) mi funziona il problema sale quando provo a scrivere un'altra riga per esempio (Mela 2 0,80), mi viene salvato nel file soltanto la seconda riga no tutte e due.!
    Qualunque cosa scrivi (anche più righe) in una delle JTextArea, VIENE salvato nel file. Di per sé non ti può "cancellare" un bel niente durante UNA singola scrittura del file. (e nota: come la stai facendo, la scrittura del file è in overwrite, riscrive il file da zero, non c'è una logica di "append").

    Il punto l'ho detto prima: se es. nella JTextArea area2 metti due righe, allora tra i due ";" verrà messo un "a capo". E questo NON è un CSV corretto. NON è così che si mettono più righe.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Scusa allora come posso inserire più righe?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Mikele99 Visualizza il messaggio
    Scusa allora come posso inserire più righe?
    Ascolta. Immagina che:

    In area1 hai 2 righe

    pippo
    pluto


    In area2 hai 2 righe

    123
    456


    In area3 hai 2 righe

    aaa
    bbb


    Tu vorresti ottenere un CSV come:

    codice:
    Nome;Quantità;Prezzo
    pippo;123;aaa
    pluto;456;bbb

    che di per sé è sensato/corretto? È questo che vuoi? Bene ... NON è quello stai ottenendo ora!

    Quello che ora otterresti è qualcosa come:

    codice:
    Nome;Quantità;Prezzo
    pippo
    pluto;123
    456;aaa
    bbb

    Che è un CSV "sballato".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Si ok.! Ma non capisco come dovrei fare

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Mikele99 Visualizza il messaggio
    Si ok.! Ma non capisco come dovrei fare
    Dovresti prendere ciascun testo delle JTextArea, "spezzarlo" a righe (ottenendo un array o collezione List) e poi ciclare per N volte (il numero di righe trovate) andando a scrivere ciascuna riga del CSV prendendo da ciascun array/List la riga i-esima.

    Per spezzare un testo in righe ci sono varie tecniche: readLine() di BufferedReader, nextLine() di Scanner o ancora le espressioni regolari (ma non lo consiglio, a meno di saper fare bene la regex).
    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.