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

    Modo migliore per caricare risorse

    Ho un progetto che è strutturato così:

    NomeProgetto:
    src - com - luca - test
    res - filemiei - miofile.txt


    All'avvio dell'applicazione carico il path del file "miofile.txt" in un array di stringhe.

    Per farlo faccio così:

    String[] arr = { "res/filemiei/miofile.txt"};

    Questo mi par di aver capito non essere il modo corretto di farlo.

    Ho provato quindi in questo modo:

    String[] arr = { ClassLoader.getSystemClassLoader().getResourceAsSt ream("/filemiei/miofile.txt").toString(); }

    che però mi restituisce sempre null.
    Cosa sbaglio?

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

    Re: Modo migliore per caricare risorse

    Originariamente inviato da pavimento
    String[] arr = { "res/filemiei/miofile.txt"};

    Questo mi par di aver capito non essere il modo corretto di farlo.
    Non è di per sé sbagliato o scorretto .... solo che essendo un path "relativo" è .... relativo alla directory "corrente" (che è la directory che è corrente quando viene avviata la JVM).
    Ora la domanda è: vuoi che il successo del caricamento del file dipenda da dove/come/con cosa è stata lanciata la tua applicazione?? Il succo è tutto lì.

    Originariamente inviato da pavimento
    String[] arr = { ClassLoader.getSystemClassLoader().getResourceAsSt ream("/filemiei/miofile.txt").toString(); }

    che però mi restituisce sempre null.
    Innanzitutto non ha senso fare un toString() su un InputStream .... getResourceAsStream() ti fornisce un InputStream .... da cui puoi leggere. Esattamente come FileInputStream è un InputStream, legato ad un file sul file-system, da cui puoi leggere.

    La questione è che usando getResource()/getResourceAsStream() la risorsa viene cercata usando lo stesso criterio che la JVM usa per cercare le classi. Ovvero ci si basa sul "classpath".
    Quella directory 'filemiei' sarà contenuta in una certa directory, no? Bene: questa directory che contiene 'filemiei' è in "classpath"??? Se sì, è ok. Se no getResourceAsStream ritorna null.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Credo di aver fatto troppa confusione e di aver pasticciato troppo.


    Nella mia applicazione uso un metodo "esterno" che come parametro vuole il percorso del file

    public void caricaCose(String pathFile)
    {
    }


    Quale è il modo giusto per poter passare il path del file a questo metodo?
    Deve funzionare anche come jar.

    Ho provato anche a fare getClass().getResource("/res/mieifile/miofile.txt"), ma restituisce un URL..

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da pavimento
    Deve funzionare anche come jar.
    No, così non può funzionare per risorse dentro un jar!!! Punto.

    Se puoi, cambia quel caricaCose() affinché possa gestire es. un InputStream. Se non puoi, non saprei cosa di più perché ovviamente non so cosa devi fare di preciso e il perché.
    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.