Скопируйте файл JAR из ресурсов во временную папку - PullRequest
0 голосов
/ 14 июля 2020

В моем Java проекте есть файлы JAR, которые мне нужно скопировать во временную папку файловой системы. Однако после копирования все скопированные файлы повреждаются, даже если их размер не совпадает с размером оригинала (при открытии zip с помощью 7Zip появляется неформатированный файл вместо структуры папок jar). Мне не нужны эти файлы для каких-либо процессов в моей программе, таких как компиляция, просто для копирования в систему.

Я пробовал некоторые решения, такие как this , this, или с библиотекой CommonsIO, но всегда копируемые файлы остаются поврежденными.

РЕДАКТИРОВАТЬ: Некоторые из проверенных мной кодов:

InputStream source = getClass().getClassLoader().getResourceAsStream(originPath);
Files.copy(source, Paths.get(destPath), StandardCopyOption.REPLACE_EXISTING);
source.close();
byte[] source = IOUtils.toByteArray(getClass().getClassLoader().getResourceAsStream(originPath));

File directoryFile = new File(originPath);
if(!directoryFile.exists()) {
  directoryFile.mkdirs();
}

try (FileOutputStream fileOutputStream = new FileOutputStream(destPath)){
  fileOutputStream.write(source);
}
catch (Exception exception) {
  throw new IOException(String.format("Failed to copy the file %s", sourceName));
}

Как я могу это сделать?

1 Ответ

0 голосов
/ 14 июля 2020

Вы пробовали:

Path source = Paths.get(...)
Path dest   = Paths.get(...)
Files.move(source,dest);

Другой способ:

File source  = new File("....");
File dest    = new File("...");
file.renameTo(dest);

В основном вам нужно адресовать файл в файловой системе, а не в пути к классам существующего приложения, поэтому я не вижу смысла использовать getClass().getResourceAsStream()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...