在 Windows 上的 Java 6 中,我有兴趣执行以下任务,但真的不知道如何去做。
- 我想要一个 zip 文件
- 将其内容解压缩到内存/RAM 中的某个位置
- 创建一个 Java 进程,该进程将运行该 ZIP 文件中存在的 .EXE 文件
- 该 .EXE 必须在当前工作目录是 RAM 中的那个位置时运行
- 然后,我需要将另一个文件放入 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可能会从操作系统的内存磁盘块缓存(在 Linux 上)中读取扩展 ZIP 中的文件。