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

    Copia file contenuto in jar

    Salve, sto realizzando un programmino e dovrei fare una copia di un file contenuto all'interno dello stesso jar eseguibile del mio software java.
    Ad esempio nella cartella file contenuta del jar ho il file in questione PIPPO.txt, io dovrei accedere a questo file e copiarlo in un altro file esterno al jar in un qualsiasi percorso, per la copia non ho problemi tuttavia non riesco ad accedere al file, non capisco perchè, vi posto i metodi che ho implementato:

    codice:
    public void fileCopy(URL pathsource, String pathdest) throws FileNotFoundException, IOException {
            File inputFile = new File(pathsource.getFile());
            File outputFile = new File(pathdest);
            InputStream finput = new BufferedInputStream(new FileInputStream(inputFile));
            OutputStream foutput = new BufferedOutputStream(new FileOutputStream(outputFile));
            byte[] buffer = new byte[1024 * 500];
            int bytes_letti = 0;
            while ((bytes_letti = finput.read(buffer)) > 0) {
                foutput.write(buffer, 0, bytes_letti);
                finput.close();
                foutput.close();
            }
        }
    tra i parametri di input come sorgente ho specificato l'URL del file sorgente e poi con getFile() mi vado a ricavare la stringa del path del file sorgente...

    l'utilizzo che ne faccio di tutto cio è questo...

    codice:
    try {
                    fileCopy(getClass().getResource("/programmatunisia/Sql/install.sql"), c + path + datafile + "\\install" + datafile + ".sql");
                } catch (FileNotFoundException ex) {
                    Logger.getLogger(BackupDB.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(BackupDB.class.getName()).log(Level.SEVERE, null, ex);
                }
    dove con getClass().getResource("....") cerco di rintracciare il path assoluto del file ma credo che il problema si generi qui perchè ho il seguente messaggio d'errore:

    java.io.FileNotFoundException: C:\Users\Fabio%20Di%20Sabatino\NetBeansProject\Pro grammaTunisia\src\programmatunisia\Sql\install.sql (Impossibile trovare il percorso specificato)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.jav a:106)
    at programmatunisia.GraphicalUserInterface.BackupDB.f ileCopy(BackupDB.java:132)


    avete qualche idea su come risolvere?

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

    Re: Copia file contenuto in jar

    Originariamente inviato da fabiolinux85
    codice:
    public void fileCopy(URL pathsource, String pathdest) throws FileNotFoundException, IOException {
            File inputFile = new File(pathsource.getFile());
    ho specificato l'URL del file sorgente e poi con getFile() mi vado a ricavare la stringa del path del file sorgente...
    È proprio questo il grosso sbaglio!
    Quel URL ha una forma molto particolare, che NON ha senso (e non funziona) né preso per intero né in parte come normale path sul file-system.
    Quindi non si può ottenere una stringa o parte di essa di un URL per passarla banalmente a File e poi FileInputStream!!!

    O usi getResource() ma il suo URL lo devi trattare proprio da URL nel senso di ottenere un URLConnection e quindi getInputStream() (praticamente come se ci si connettesse ad un indirizzo sul web).
    Oppure usi getResourceAsStream che ti fornisce un InputStream per leggere dalla risorsa.


    P.S. Un buffer da 500 kilobyte è una mostruosità ..... no .. più piccolo es. 4096 o 8192!! E poi fai un ciclo "pulito". Il tuo tra l'altro è sbagliato, fai dei close() nel ciclo!!

    Vedi tra i miei Java Examples l'esempio che copia un file (ti basta solo guardare il ciclo).
    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.