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;
}
提前谢了。
由于您的DLL被捆绑在jar文件中,您只需尝试使用ClassLoader#GetResourceAsStream将它们作为资源,并在硬盘上任何您想要的地方将它们写入二进制文件即可。
下面是一些示例代码:
InputStream ddlStream = <SomeClassInsideTheSameJar>.class
.getClassLoader().getResourceAsStream("some/pack/age/somelib.dll");
try (FileOutputStream fos = new FileOutputStream("somelib.dll");){
byte[] buf = new byte[2048];
int r;
while(-1 != (r = ddlStream.read(buf))) {
fos.write(buf, 0, r);
}
}
上面的代码将把位于包some.pack.age
中的dll解压缩到当前工作目录。
问题内容: 我是否可以使用任何内置方法允许用户从当前运行的JAR中提取文件并将其保存在其磁盘上? 提前致谢。 问题答案: 使用(docs),之后您可以执行任何操作。 对于两层式,您可以使用Commons IO复制方法之一。
问题内容: 我在Bean Shell Sampler中尝试了以下方法; 看来,它无法运行。.我是否以正确的方式进行操作? 问题答案: 如果您需要使用Beanshell进行此操作,建议对process命令行进行以下修改: 有关更多信息,请参见cmd.exe文档。 但是,在大多数情况下,使用OS Process Sampler 可能更容易,它允许执行任意命令和程序。了解如何从JMeter本地和远程运行
问题内容: 我想从罐子中复制文件。我要复制的文件将被复制到工作目录之外。我已经做过一些测试,所有尝试使用的方法都以0字节文件结尾。 编辑 :我希望通过程序而不是手动完成文件的复制。 问题答案: 首先,我想说的是,之前发布的一些答案是完全正确的,但是我想告诉我,因为有时我们不能在GPL下使用开放源代码库,或者因为我们懒得下载jarXD或其他文件无论您的理由在这里,还是一个独立的解决方案。 下面的函数
问题内容: 假设我的jar包“ com.test.io”中有一个名为test.txt的文件。 我将如何编写一个类来检索此文本文件,然后将内容复制到文件系统上的新文件中? 问题答案: 假设jar在您的类路径中:
如何在 PyCharm 中运行当前文件?我想要一个热键,它将使用项目默认的 python 解释器执行当前文件(无论是普通文件、暂存文件还是暂存缓冲区)。我不想创建自定义运行配置,而只需使用默认的 Python 配置启动即可。这样的事情可能吗?
我想将当前行复制到它下面的新行。我找到了这篇文章,但在options>键盘中找不到他们谈论的选项()。 2017年我们如何做到这一点?