Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: [JAVA]salvataggio file

  1. #1

    [JAVA]salvataggio file

    salve ragazzi, vorrei sapere una cosa, devo fare in modo che un file presente nel pc (già preimpostato) debba essere salvato mediante una jfilechooser, ma non so come fare, vi mando il codice da me provato
    codice:
    JFileChooser chooser = new JFileChooser ();
       chooser.removeChoosableFileFilter (chooser.getAcceptAllFileFilter ());
       chooser.addChoosableFileFilter (new FileNameExtensionFilter ("Documento Acrobat Reader", "pdf"));
      int returnVal = chooser.showSaveDialog(jPanel);
      String destinazione;
      if(returnVal==JFileChooser.APPROVE_OPTION){
      File fFile = chooser.getSelectedFile ();
              if (fFile.exists ()) {
                  int response = JOptionPane.showConfirmDialog (jInserimentoprog,
                    "Sovrascrivere il file esistente?","Conferma sovrascrittura",
                     JOptionPane.OK_CANCEL_OPTION,
                     JOptionPane.QUESTION_MESSAGE);
                  if (response == JOptionPane.CANCEL_OPTION) {         
     destinazione=null;
                  }else{
                 
      destinazione=fFile.getPath();
                  }
                  }else{
                 destinazione =fFile.getPath() + ".pdf";
                  
                  }
          }else{
          destinazione=null;
          }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    E quindi??? Il codice che hai postato non fa un bel niente sul file selezionato dal JFileChooser. Se usi showSaveDialog è per selezionare un file da "scrivere" che tecnicamente può anche non esistere già. Cosa poi fai con il File fornito da JFileChooser, sono questioni tue.

    Non è chiaro cosa vuoi fare: "in modo che un file presente nel pc (già preimpostato) debba essere salvato". Cioè?? Vuoi copiare un file già presente su disco?? O cosa?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    praticamente sì, il file è presente nel pc, tramite la jfilechooser deve essere copiato dove decide l'utente

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Reddragoon
    praticamente sì, il file è presente nel pc, tramite la jfilechooser deve essere copiato dove decide l'utente
    Bene, istanzi un FileInputStream per il file sorgente, un FileOutputStream per il file di destinazione. Poi istanzi un array di byte di lunghezza fissa (es. 1024 byte) e fai un ciclo in cui leggi a blocchi di byte e li scrivi sul FileOutputStream.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    potresti per favore postare una bozza di codice????
    ho capito il procedimento ma non so come farlo

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Reddragoon
    potresti per favore postare una bozza di codice????
    ho capito il procedimento ma non so come farlo
    codice:
    FileInputStream fis = new FileInputStream(inputFile);
    FileOutputStream fos = new FileOutputStream(outputFile);
    byte[] buf = new byte[1024];
    int n;
    
    while ((n = fis.read(buf)) != -1)
        fos.write(buf, 0, n);
    Ho omesso le close e la gestione delle eccezioni, che ovviamente sono da fare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    ok, e questo lo unisco alla jfilechooser giusto?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Reddragoon
    ok, e questo lo unisco alla jfilechooser giusto?
    Il codice mettilo dove vuoi, preferibilmente magari in un metodo a sé stante del tipo:

    public static void copiaFile(File src, File dst) throws IOException { .... }

    e la eccezione la fai uscire fuori (la catturi e gestisci più "sopra").
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    il codice diverebbe questo giusto????

    codice:
    JFileChooser chooser = new JFileChooser ();
       chooser.removeChoosableFileFilter (chooser.getAcceptAllFileFilter ());
       chooser.addChoosableFileFilter (new FileNameExtensionFilter ("Documento Acrobat Reader", "pdf"));
      int returnVal = chooser.showSaveDialog(jPanel);
      String destinazione;
      if(returnVal==JFileChooser.APPROVE_OPTION){
      File fFile = chooser.getSelectedFile ();
              if (fFile.exists ()) {
                  int response = JOptionPane.showConfirmDialog (jInserimentoprog,
                    "Sovrascrivere il file esistente?","Conferma sovrascrittura",
                     JOptionPane.OK_CANCEL_OPTION,
                     JOptionPane.QUESTION_MESSAGE);
                  if (response == JOptionPane.CANCEL_OPTION) {         
     destinazione=null;
                  }else{
                 
      destinazione=fFile.getPath();
                  }
                  }else{
                 destinazione =fFile.getPath() + ".pdf";
                 FileInputStream fis = new FileInputStream("miofile.pdf");
                 FileOutputStream fos = new FileOutputStream(destinazione);
                 byte[] buf = new byte[1024];
                  int n;
    
    while ((n = fis.read(buf)) != -1)
        fos.write(buf, 0, n);
                  
                  }
          }else{
          destinazione=null;
          }

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    C'è un }else{ che secondo me non quadra molto ... faresti la copia solo se il file non esiste già.

    Poi se metti new FileInputStream("miofile.pdf") cioè senza alcun path, si presuppone che il file miofile.pdf sia nella "current working directory", ovvero la directory che è corrente quando hai lanciato la applicazione (e quindi dipende da dove/come l'hai avviata). Ti va bene così?

    Infine non vedo un minimo trattamento delle eccezioni. E tutto il codice comunque è un po' un miscuglio. Quando ti ho consigliato di fare un metodo apposito per la copia non era tanto per dire .... spezza il codice!!

    Se facessi un metodo apposito per la scelta (e conferma sovrascrittura) del file e un metodo per la copia, poi potresti fare una cosa del tipo:

    codice:
    File dest = sceltaFile();
    
    if (dest != null) {
        try {
            copiaFile(new File("miofile.pdf"), dest);
        } catch (IOException e) {
            ....
        }
    }
    Non è più semplice e pulito?


    E comunque ci sarebbe ancora un altro punto: tutto quel codice quando lo esegui?? In risposta ad un qualche evento della interfaccia utente (es. pressione pulsante)???
    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.