Можно ли скопировать файл src/main/resources/hibernate.cfg.xml
?
Что ни будь типа
Files.copy(файл_из_ресурсов.toPath(), new File("D:\\hibernate.cfg.xml").toPath());
Собственно, после сборки jar-ника ничего не получается.
Нельзя. Но можно скопировать содержимое:
public void copyResource() {
try (InputStream in = getClass()
.getClassLoader()
.getResourceAsStream("hibernate.cfg.xml");
OutputStream out = new FileOutputStream("D:\\hibernate.cfg.xml")) {
int data;
while ((data = in.read()) != -1) {
out.write(data);
}
}
catch (IOException exc) {
exc.printStackTrace();
}
}
Вообще говоря, где именно в jar-файле содержится ваш ресурс -- это зависит от того, чем и как вы упаковывали ваш jar-файл. Eclipse
, например, по умолчанию располагает папку resources
в корне директории src
и при сборке копирует ее в bin
, а при экспорте в jar
копируется содержимое папки bin
, таким образом, содержимое папки resources
доступно там же, откуда загружаются классы, по относительному пути resources/XXX.XXX
, где XXX.XXX
-- имя файла.
В этом случае доступ к файлу можно получить так:
getClassLoader().getResourceAsStream("resources/file.txt");
Вот сниппет, с которым можете поиграться:
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import static java.nio.file.StandardCopyOption.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Ru_So_772259 {
// Ru_So_772259_Копирование_файла_из_ресурсов_jar
public static void main(String[] args) {
try {
String fileName = "resources/MyFile.txt"; // Должен быть src/resources/MyFile.txt
InputStream inpStream = Ru_So_772259.class.getClassLoader().getResourceAsStream(fileName);
if (inpStream == null) throw new FileNotFoundException(fileName + " not found");
Path target = Paths.get("MyCopy.txt");
Files.copy(inpStream, target, REPLACE_EXISTING);
Files.copy(target, System.out); // Просто дублировать на экран, чтоб видно было
inpStream.close();
System.out.println("На этот раз повезло!");
} catch (IOException e) {
System.out.println("Облом: ");
e.printStackTrace(System.out);
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
I'm develop a basic Java3d applicationHow to add physics to Java3d application and does it even exit for Java3d ? Please help me or give me advice
Наткнулась на такие строки про область видимости Singleton в Spring:
Например на странице есть селектор div#player1, в нем находятся другие селекторы, которые нужно заменять пусть будет div#player1 #sum, div#player1 #sum2