Использование относительного пути к каталогу в Java - PullRequest
20 голосов
/ 15 июля 2009

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

final static String directory = "../../../ggla/samples/obj/linux_x86"

не получается ... как правильно использовать относительный путь в Java?

Ответы [ 6 ]

38 голосов
/ 15 июля 2009

Наиболее вероятным объяснением является то, что ваш текущий каталог не там, где вы думаете, что он есть. Вы можете проверить системное свойство user.dir, чтобы увидеть, каков базовый путь приложения, или вы можете сделать что-то вроде этого:

 System.out.println(new File(".").getCanonicalPath());

прямо перед тем, как использовать относительный путь для отладки, с которого начинается ваша относительная ссылка.

2 голосов
/ 15 июля 2009

Использовать System.out.println (System.getProperty ("user.dir")); чтобы увидеть, где находится ваш текущий каталог. Затем вы можете использовать относительные пути с этого адреса.

В качестве альтернативы, если вам не нужно обновлять файл, который вы пытаетесь прочитать, получите его из пути к классам, используя getResourceAsStream ("filename");

Karl

1 голос
/ 15 июля 2009

Вам нужно getCanonicalPath или getCanonicalFile для разрешения относительных путей.

System.out.println(new File("../../../ggla/samples/obj/linux_x86")
    .getCanonicalPath());
0 голосов
/ 15 июля 2009

Для относительного пути, возможно, вы можете использовать один из методов, предоставленных Java, для начала относительного пути как getRelativePath .... Вы должны использовать / а не // в строке в Java!

0 голосов
/ 15 июля 2009

Я бы начал с использования разделителя и разделителя пути, указанных в Java Класс файла . Однако, как я сказал в своем комментарии, мне нужно больше информации, чем «это не помогает», чтобы помочь.

0 голосов
/ 15 июля 2009

Вы можете использовать относительные пути, как вы описываете, и это должно работать. Так что ошибка, вероятно, где-то еще.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...