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.
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());
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());
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.
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");