在Windows上的Java 6中,我对执行以下任务很感兴趣,但真的不知道如何进行
- 我想要一个zip文件
- 将其内容解压缩到存储器/RAM
- 创建一个Java进程,该进程将运行该ZIP文件中存在的.EXE文件
- 当当前工作目录是RAM中的那个位置时,必须运行.EXE
- 然后,我需要将另一个文件放入RAM中相同的"当前工作目录"位置空间
我知道这听起来很奇怪,但这样做实际上会让事情变得更有效率,所以如果可能的话,很高兴知道。
这听起来很困难,而且肯定需要很多纯Java无法完成的东西。
在Linux上,我认为您需要执行以下操作:
-
创建并装载"tmpfs"-https://unix.stackexchange.com/questions/66329/creating-a-ram-disk-on-linux
-
将ZIP文件解压缩到tmpfs 中
-
使用ProcessBuilder运行.exe。。。它允许您设置子进程的当前目录。
-
等
-
完成后卸载"tmpfs"。
创建"ram disk"文件系统的命令将是特定于操作系统的,并且可能需要root/管理员权限。
目前尚不清楚这样做是否比在文件系统中使用临时目录更有效。我不会尝试这样做,除非有明确的证据表明需要一个更有效的解决方案;即,除非您尝试使用临时目录,但发现它太慢。
请记住:
-
打开ZIP文件的大部分(可能是大部分)工作都必须以任何一种方式完成,而
-
在传统情况下,您的.exe可能会从OS的内存磁盘块缓存中读取扩展ZIP中的文件(在Linux上)。