如何从内存/RAM 作为"current working directory"运行进程



在Windows上的Java 6中,我对执行以下任务很感兴趣,但真的不知道如何进行

  1. 我想要一个zip文件
  2. 将其内容解压缩到存储器/RAM
  3. 创建一个Java进程,该进程将运行该ZIP文件中存在的.EXE文件
  4. 当当前工作目录是RAM中的那个位置时,必须运行.EXE
  5. 然后,我需要将另一个文件放入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上)。

最新更新