Java ProcessBuilder如何捕获来自进程的文件读取请求并作为流提供?

标签 java process automation stream processbuilder

我对 ProcessBuilder 有点熟悉并处理流。 现在我遇到了一个问题,我正在自动化的过程从我需要提供的两个文件中读取一些信息。 目前,我正在编写文件并通过 ProcessBuilder 提供程序的路径。 由于我预计在不久的将来会有数百万次运行,因此我希望通过在内存中完成所有工作而不是读取和写入文件来加快速度。

基本上,我需要做的是从自动化程序捕获文件打开请求,并从字符串流或类似的东西提供预期的数据。 当然,如果我能以某种方式告诉 ProcessBuilder 我给出的文件路径被流替换,那就更好了。

我怎样才能实现这个目标?

最佳答案

没有 Process 接口(interface)允许您像这样拦截和修改 I/O 访问。除非您拥有要自动执行的程序的源代码,否则您很可能必须在操作系统级别上执行此操作。

这可以通过创建 ram disk 来实现。例如,如果您使用的是 Linux,那么事情就没那么复杂。看看这个链接:Linux RAM Disk: Creating A Filesystem In RAM .

我想另一种选择是让你的Java程序创建一个named pipe并将它们作为自动化程序的路径传递。

关于Java ProcessBuilder如何捕获来自进程的文件读取请求并作为流提供?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4841995/

相关文章:

java - 我需要什么集合来存储对象及其数量?

java - 通过 java 向 Minecraft 服务器发送命令

c++ - x64 Linux 中的单进程最大可能内存

java - 在 Java 中生成带参数的 linux 命令

javascript - Cucumber生成空白html报告

bash - Linux屏幕命令自动化

java - 无法通过 AssetManager - libgdx 从 zip 存档加载 TextureAtlas

java - 我应该如何使用 ajax 触发 Web 服务调用以导出 Excel

java - 您可以根据自己的需要创建一个 TestNG Listener

java - ElasticSearch - 定义用于排序的自定义字母顺序