web-dev-qa-db-fra.com

Comment charger / référencer un fichier en tant qu'instance de fichier à partir du classpath

J'ai un fichier qui est dans mon classpath, par exemple. com/path/to/file.txt. Je dois charger ou référencer ce fichier en tant que Java.io.File objet. Le est parce que je dois accéder au fichier en utilisant Java.io.RandomAccessFile (le fichier est volumineux et je dois rechercher un certain décalage d'octet). Est-ce possible? Les constructeurs de RandomAccessFile requièrent une instance de File ou String (chemin).

S'il existe une autre solution pour rechercher un certain décalage d'octet et lire la ligne, je suis également ouverte à cela.

69
jake

Essayez de vous procurer une URL pour votre ressource de chemin de classe:

URL url = this.getClass().getResource("/com/path/to/file.txt")

Créez ensuite un fichier en utilisant le constructeur qui accepte un URI:

File file = new File(url.toURI());
225
joelittlejohn

Cela fonctionne également et ne nécessite pas de conversion d'URI/path/to/file. Si le fichier est sur le chemin de classe, il le trouvera.

File currFile = new File(getClass().getClassLoader().getResource("the_file.txt").getFile());
46
Hotel

Je trouve ce code sur une ligne le plus efficace et utile:

File file = new File(ClassLoader.getSystemResource("com/path/to/file.txt").getFile());

Fonctionne comme un charme.

18
Gondy

Ou utilisez directement le InputStream de la ressource en utilisant le chemin absolu CLASSPATH (en commençant par le / caractère slash):


getClass().getResourceAsStream("/com/path/to/file.txt");

Ou chemin CLASSPATH relatif (lorsque la classe que vous écrivez est dans le même package Java que le fichier de ressources lui-même, c.-à-d. com.path.to):


getClass().getResourceAsStream("file.txt");
4
Jiri Patera