У меня есть jav-проект, который создается через муравья. Он записывает файлы классов в output/classes/com/... path. Один из моих классов java требует потока ввода, считанного из файла, находящегося в папке на один уровень над выходной папкой. Похоже, если вы скопируете файл в папку пакета под outptu/classes, это, похоже, сработает. Но я не хочу следить за файлом конфигурации в выходной папке, поскольку он будет очищен, когда я буду чистить муравей. Я хочу, чтобы он нашел его над выходной папкой в папке config и загрузил ее.Относительные пути к методу getResourceAsStream
public static final String CONFIG_FILE="/../../../../../../../Config.txt";
public static ConfigObj getConfigObj() throws IOException {
InputStream i=ConfigLoader.class.getResourceAsStream(CONFIG_FILE);
...
Я хочу знать, когда я хочу дать raltivepath, что она должна быть относительно. Я попытался посмотреть вверх, это говорит относительно загрузчика классов. Что такое classloader в этом случае? Это папка output/classes/com ....../config, где живет мой ConfigLoader.class?
Большое спасибо, zagyi. Но абсолютные пути не переносимы, нет ли другого способа, которым я могу указать путь относительно выходной папки ,? добавление каталога в classpath не кажется очень удобным для пользователя. – learningtocode
Если это действительно файл конфигурации пользователя, то я думаю, что пользователи будут ожидать, что он будет размещен где-то под домашним каталогом пользователей в соответствии с условными соглашениями ОС. Если вы настаиваете на том, чтобы он относился к вашим скомпилированным классам, попробуйте использовать методы, описанные в [этом сообщении] (http://stackoverflow.com/a/676413/1276804). Однако я не уверен в надежности таких решений. – zagyi