Например, у меня есть этот путь:

C:\Program Files\7-Zip\7z.exe

Теперь мне нужен только путь, но не .exe следующим образом:

C:\Program Files\7-Zip

Как я могу вырезать последнюю часть в динамических путях с большим или меньшим количеством каталогов или более длинными именами в конце?

Я пробовал поиграть с indexOf() и subString(), но у меня ничего не получилось.

0
RjuJBong 18 Сен 2018 в 12:09

2 ответа

Лучший ответ

Попробуйте использовать API пути Java:

Path file = Paths.get("C:\\Program Files\\7-Zip\\7z.exe");
Path dir = file.getParent();
System.out.println(dir.toString());

https://docs.oracle.com/javase/7/docs/api/java/nio/file/Path.html

11
Tommy Brettschneider 18 Сен 2018 в 09:50

Используйте что-то вроде этого:

String path = "C:\\Program Files\\7-Zip\\7z.exe";
    String[] a = path.split(Pattern.quote(""));
    String newpath = "";
    for(int i = a.length-1; i > 0; i--) {
        if(a[i].compareTo("\\") != 0) {
            a[i] = "";

        } else {
            break;
        }
    }
    for(int i = 0; i < a.length; i++) {
        if(a[i].compareTo("") != 0) {
            newpath += a[i];
        }
    }
    System.out.println(newpath);
0
Cedric 18 Сен 2018 в 09:18