Подтвердить что ты не робот

Как загрузить/ссылаться на файл как экземпляр файла из пути к классам

У меня есть файл, который находится в моем пути к классам. Например, com/path/to/file.txt. Мне нужно загрузить или ссылаться на этот файл как объект java.io.File. Причина в том, что мне нужно получить доступ к файлу с помощью java.io.RandomAccessFile(файл большой, и мне нужно искать смещение байта). Это возможно? конструкторам RandomAccessFile требуется экземпляр File или String (путь).

Если есть другой способ поиска определенного смещения байта и чтения строки, я также открываю это решение.

спасибо.

4b9b3361

Ответ 1

Попробуйте получить URL-адрес вашего ресурса pathpath:

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

Затем создайте файл, используя конструктор, который принимает URI:

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

Ответ 2

Это также работает и не требует преобразования URI/path/to/file. Если файл находится в пути к классам, он найдет его.

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

Ответ 3

Я считаю этот однострочный код наиболее эффективным и полезным:

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

Работает как шарм.

Ответ 4

Или используйте непосредственно InputStream ресурса, используя абсолютный путь CLASSPATH (начиная с символа косой черты /):


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

Или относительный путь CLASSPATH (когда класс, который вы пишете, находится в том же пакете Java, что и сам файл ресурса, т.е. com.path.to):


getClass().getResourceAsStream("file.txt");