Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883

    (java) come leggere un file di testo da un jar

    Ho una classe che accede ad un file di testo usando le seguenti righe di codice:

    url=ThisClass.getResource("/resources/listaNomi.txt");
    File myFile = new File(url.getPath());

    Compilo, eseguo dal compilatore (io uso Eclipse) ed il programma funziona
    Adesso creo il file jar del mio programma, lo eseguo con il seguente comando

    C:\>java -jar mioProgramma.jar

    ed ottengo il seguente errore:

    file:/C:/mioProgramma.jar!/resources/listaNomi.txt
    java.io.FileNotFoundException: file:\C:\mioProgramma.jar!\resources\listaNomi.txt (La sintassi del nome del file, della directory o del volume è incorretta)


    come posso risolvere il problema?

  2. #2
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Hai provato a mettere

    url=ThisClass.getResource("resources/listaNomi.txt");
    File myFile = new File(url.getPath());


    e non

    url=ThisClass.getResource("/resources/listaNomi.txt");
    File myFile = new File(url.getPath());


    E' probabile che dipenda da quello slash in più... cmq anch'io non ho pace con i file .jar e i file contenuti in essi. Se dovessi trovare 1 soluzione migliore me la dici?
    Ciao
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    Ho trovato questa soluzione funzionanate

    public void readTextFromJar(String s) {
    String thisLine;
    try {
    InputStream is = this.getClass().getResourceAsStream(s);
    BufferedReader br = new BufferedReader
    (new InputStreamReader(is));
    while ((thisLine = br.readLine()) != null) {
    System.out.println(thisLine);
    }
    }
    catch (Exception e) {
    e.printStackTrace();
    }
    Il probela è che viene usato "this". Siccome io ho un sacco di metodi statici questa soluzione non posso usarla. Se qualcuno ne trova un'altra fate un fischio

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    Per risolvere quest'ultimo problema ho usato invece di
    this.getClass();

    la seguente linea di codice

    NomeDellaClasse.class;

    Adesso funziona anche in ambito statico

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 © 2024 vBulletin Solutions, Inc. All rights reserved.