Java ProcessBuilder, как захватить запрос на чтение файла из процесса и предоставить в виде потока?

Я немного знаком с ProcessBuilder и обрабатываю потоки. Теперь я столкнулся с проблемой, что процесс, который я автоматизирую, считывает некоторую информацию из двух файлов, которые мне нужно предоставить. В данный момент пишу файлы и предоставляю пути к программе через ProcessBuilder. Поскольку в ближайшем будущем я ожидаю миллионы прогонов, я хотел бы ускорить работу, выполняя всю работу в памяти, а не читая и записывая в файл.

По сути, мне нужно иметь возможность захватить запрос на открытие файла из автоматизированной программы и предоставить ожидаемые данные из строкового потока или чего-то подобного. Конечно, если бы я мог каким-то образом сообщить ProcessBuilder, что пути к файлам, которые я даю, заменены потоками, это было бы еще лучше.

Как я могу этого добиться?


person jallmer    schedule 30.01.2011    source источник


Ответы (1)


Нет интерфейса для Process, который позволял бы вам перехватывать и изменять доступ к вводу-выводу таким образом. Если у вас нет исходного кода программы, выполнение которой вы пытаетесь автоматизировать, вам, скорее всего, придется делать это на уровне ОС.

Однако этого можно добиться, создав RAM-диск. Например, если вы работаете в Linux, это не так сложно. Взгляните на эту ссылку: Linux RAM Disk: Создание файловой системы В оперативной памяти.

Я полагаю, что другой альтернативой было бы позволить вашей Java-программе создать именованный канал и передать их как пути к автоматизированной программе.

person aioobe    schedule 30.01.2011
comment
Больше всего разочаровывает то, что это невозможно в java. Однако ваша идея с RAM-диском (не смотрел на них со времен MSDOS) должна решить проблему. - person jallmer; 30.01.2011
comment
Без вмешательства в двоичный файл, выполняемый из ProcessBuilder, ни один язык программирования не позволил бы вам проделать такой трюк. - person aioobe; 30.01.2011
comment
Хм, Condor (cs.wisc.edu/condor) и другие кластерные программы должны быть каким-то образом способный выполнить трюк перенаправления без изменения каких-либо двоичных файлов. - person jallmer; 30.01.2011
comment
Они решают это на уровне ОС, как и предложенные мной решения. - person aioobe; 30.01.2011