Ответ 1
Попробуйте получить URL-адрес вашего ресурса pathpath:
URL url = this.getClass().getResource("/com/path/to/file.txt")
Затем создайте файл, используя конструктор, который принимает URI:
File file = new File(url.toURI());
У меня есть файл, который находится в моем пути к классам. Например, com/path/to/file.txt. Мне нужно загрузить или ссылаться на этот файл как объект java.io.File. Причина в том, что мне нужно получить доступ к файлу с помощью java.io.RandomAccessFile(файл большой, и мне нужно искать смещение байта). Это возможно? конструкторам RandomAccessFile требуется экземпляр File или String (путь).
Если есть другой способ поиска определенного смещения байта и чтения строки, я также открываю это решение.
спасибо.
Попробуйте получить URL-адрес вашего ресурса pathpath:
URL url = this.getClass().getResource("/com/path/to/file.txt")
Затем создайте файл, используя конструктор, который принимает URI:
File file = new File(url.toURI());
Это также работает и не требует преобразования URI/path/to/file. Если файл находится в пути к классам, он найдет его.
File currFile = new File(getClass().getClassLoader().getResource("the_file.txt").getFile());
Я считаю этот однострочный код наиболее эффективным и полезным:
File file = new File(ClassLoader.getSystemResource("com/path/to/file.txt").getFile());
Работает как шарм.
Или используйте непосредственно InputStream
ресурса, используя абсолютный путь CLASSPATH (начиная с символа косой черты /
):
getClass().getResourceAsStream("/com/path/to/file.txt");
Или относительный путь CLASSPATH (когда класс, который вы пишете, находится в том же пакете Java, что и сам файл ресурса, т.е. com.path.to
):
getClass().getResourceAsStream("file.txt");