Tôi có tệp .jar có hai tệp .dll phụ thuộc vào. Tôi muốn biết nếu có bất kỳ cách nào cho tôi để sao chép các tập tin này từ bên trong .jar vào một thư mục tạm thời người dùng lúc chạy. đây là mã hiện tại mà tôi có (chỉ được chỉnh sửa cho một tải .dll để giảm kích thước câu hỏi):Cách sao chép các tệp ra khỏi jar hiện đang chạy
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;
}
Vấn đề chính của tôi là lấy các tệp .dll ra khỏi bình khi chạy. Bất kỳ cách nào để lấy đường dẫn từ bên trong .jar sẽ hữu ích.
Xin cảm ơn trước.
Bạn có muốn nhận đường dẫn của tệp arround .dll – user217895
Có chỉ để tôi có thể truy cập tệp và sao chép chúng. Tất cả những gì tôi cần là đường dẫn lớp. Tôi đã biết cách sao chép các tập tin. – DeanMWake