2015-04-29 7 views
0

Я бегу приложение Java (app1), который работает несколько экземпляров другого приложения Java (app2) параллельно с использованием ProcessBuilder и Fixed пул потоков со следующим кодом:Java: Получить рабочую директорию текущего процесса строитель

futures = new ArrayList<Future<String>>(); 
executor = Executors.newFixedThreadPool(10); 
for (int i=0; i<cnt;i++) 
{ 
ProcessBuilder builder = new ProcessBuilder(); 
builder.command("java","app2"); //I set the class path in the real code 
builder.directory(new File("/Users/Evan/Documents/workspace/MyProj/ins_"+i)); 
builder.inheritIO(); 
ProcessRunner pr=new ProcessRunner (builder); 
futures.add(executor.submit(pr)); 
} 

Каждый запуск приложения 2 имеет различный рабочий каталог (значение i в папке ins_i отличается для каждого запуска). Код работает, но теперь в app2 я хочу прочитать файл из рабочего каталога текущего процесса (т.е./Users/Evan/Documents/workspace/MyProj/ins _ "+ i). Поэтому в коде приложения 2 мне нужно заявление что дайте мне знать директорию текущего строителем процесса (в основном значение I в "/ Users/Evan/Документы/рабочего пространства/MYPROJ/INS _" + я)
Я попробовал это утверждение:.

System.getProperty("user.dir") 

и это не сработало, потому что он извлекается «/ Users/Evan/Документы/рабочее пространство/MYPROJ»

Спасибо, и я признателен за любую помощь

+0

Что такое 'ProcessRunner'? Что он на самом деле делает, когда он работает? – Kenster

ответ

0

, но теперь в app2, я хочу, чтобы прочитать файл из рабочей директории текущего процесса

Если вы знаете имя файла, который вы хотите читать в рабочем каталоге app2, вы можете просто создать файл object, передавая имя файла файла, который вы хотите прочитать. По умолчанию родительская папка соответствует текущему рабочему каталогу (который определяется ProcessBuilder)

File myFile = new File("FileToRead"); 
//read from myFile using FileInputStream 
Смежные вопросы