2012-04-18 3 views
0

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

C:/users/Username/Desktop/\..\..\..\Windows\Web\..\..\Program Files\..\Program Files\..\Python27\ 

Но я хотел бы иметь что-то вроде:

C:\Python27\ 

Это пример!

Как я могу очистить путь, чтобы получить только необходимую деталь?

Спасибо.

+0

как вы выглядите? – Dan

+0

Вот код, который я использую (без чистого пути) http://stackoverflow.com/questions/10204722/java-exec-console/10205644#10205644 – Manitoba

+0

Итак, каковы критерии для очищенного пути? Только часть после последнего '\'? – Qowaz

ответ

5

Если fileName ваше имя файла строка, то что-то вроде:

String cleanedFilename = new File(fileName).getCanonicalPath(); 

должен делать это ...

Se также API description.

+0

Спасибо, что работает! – Manitoba

3

Вы можете попробовать использовать File.getCanonicalPath (метод):

File file = new File("my/init/path"); 
String path = file.getCanonicalPath(); 

Я не испытываю, хотя, говорят нам обратно!

EDIT: @MathiasSchwarz является правильным, используйте getCanonicalPath() вместо getAbsolutePath() (link)

+0

'getAbsolutePath' не требуется для удаления' ..' и '.'. Единственная гарантия заключается в том, что возвращаемый путь не является относительным. –

+0

Да, я просто понял это, я редактировал, прежде чем вы писали :) – sp00m

3

Вот код, который я только что попробовал.

new File("c:/temp/..").getCanonicalPath();

возвращает 'C: \', то есть правильно. Родитель c:/temp действительно c:\

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