2013-09-03 3 views
0

Я получаю значение переменной окружения Linux в JAVA код следующим образом:извлечь часть пути каталога Linux

String path = getEnv("MY_HOME") 

//MY_HOME corresponds to mydir/myproject/proj/landing_page/home 

Я хочу написать метод, который возвращает абсолютный каталог path- MYDIR/MyProject/журналы с использованием MY_HOME среды переменная.

Может кто-нибудь предложить, как я могу получить часть mydir/myproject/'пути в MY_HOME?

+0

Почему вы не просто разделить' значение path' и восстановить его с подпутей вам нужно? –

+0

Невозможно задать такие вопросы, как «У меня есть строка' mydir/myproject/proj/landing_page/home', и я хочу получить 'mydir/myproject'. Это нам не помогает, потому что мы не знаем, что вы хотите с помощью других строк, кроме 'mydir/myproject/proj/landing_page/home'. Что именно вы хотите? Первые два компонента пути? Все до первого «т»? Или что-то другое? Первый шаг - выяснить, что вам нужно, и как точно сформулировать его. – ajb

+0

Я не могу этого сделать, потому что путь mydir будет другим для разных пользователей. Итак, мне нужно что-то вроде: получить MY_HOME, перейти на 3 уровня (получить mydir/myproject), а затем добавить новый каталог в путь. – andro

ответ

0

может быть, вы ищете getParentFile метод File «s:

new File(getEnv("MY_HOME")).getParentFile().getAbsolutePath() 
+0

Спасибо. Это решило мою проблему. – andro

0

Вы можете использовать метод System.getEnv(String).

Если вы хотите части MY_HOME идя 3 уровня вверх, то вы, вероятно, может сделать:

String logPath = myHome + "/../../../logs"; 

ИЛИ получить первые 2 части пути:

String arr[] = myHome.split("/"); 
String logPath=""; 
if (arr.length > 2) 
    logPath = arr[0] + '/' + arr[1] + "/logs"; 
System.out.println(logPath); // mydir/myproject/logs 
+0

Я использую метод getEnv для извлечения MY_HOME. Но мне нужно использовать выбранную часть полученного MY_HOME для установки другой переменной окружения – andro

+0

Хорошо, проверьте редактирование. – anubhava

+1

Спасибо anubhava за ваш метод. – andro

1

класс Путь в Java IO имеет метод подпуть так что вы можете сделать следующее:

Path path = Paths.get("one/two/three"); 
System.out.println(path.subpath(0, 2)); 

выход будет «один/два»;

Смежные вопросы