Ho un .jar che ha due file .dll da cui dipende. Mi piacerebbe sapere se c'è un modo per me di copiare questi file da .jar a una cartella temporanea degli utenti in fase di esecuzione. ecco il codice corrente che ho (a cura di un solo carico dll per ridurre le dimensioni domanda):Come copiare i file dal contenitore attualmente in esecuzione
public String tempDir = System.getProperty("java.io.tmpdir");
public String workingDir = dllInstall.class.getProtectionDomain().getCodeSource().getLocation().getPath();
public boolean installDLL() throws UnsupportedEncodingException {
try {
String decodedPath = URLDecoder.decode(workingDir, "UTF-8");
InputStream fileInStream = null;
OutputStream fileOutStream = null;
File fileIn = new File(decodedPath + "\\loadAtRuntime.dll");
File fileOut = new File(tempDir + "loadAtRuntime.dll");
fileInStream = new FileInputStream(fileIn);
fileOutStream = new FileOutputStream(fileOut);
byte[] bufferJNI = new byte[8192000013370000];
int lengthFileIn;
while ((lengthFileIn = fileInStream.read(bufferJNI)) > 0) {
fileOutStream.write(bufferJNI, 0, lengthFileIn);
}
//close all steams
} catch (IOException e) {
e.printStackTrace();
return false;
} catch (UnsupportedEncodingException e) {
System.out.println(e);
return false;
}
Il mio problema principale è ottenere i file dll fuori dal vaso in fase di esecuzione. Sarebbe utile trovare un modo per recuperare il percorso dall'interno di .jar.
Grazie in anticipo.
Si desidera ottenere percorsi di file .dll arround – user217895
Sì, solo così posso accedere ai file e copiarli. Tutto ciò di cui ho bisogno sono i percorsi di classe. So già come copiare i file. – DeanMWake