2013-03-06 5 views
0

У меня есть 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?

ответ

1

Проблема в том, что getResourceAsStream() загрузит ресурсы из пути к классу. Я думаю, у вас есть только output/classes на вашем пути к классам, поэтому вы никогда не сможете загрузить файл конфигурации через getResourceAsStream(), если он находится за пределами этого каталога. Используйте File с абсолютным путем, указывающим на файл, или поместите его в свой путь к классам.

+0

Большое спасибо, zagyi. Но абсолютные пути не переносимы, нет ли другого способа, которым я могу указать путь относительно выходной папки ,? добавление каталога в classpath не кажется очень удобным для пользователя. – learningtocode

+0

Если это действительно файл конфигурации пользователя, то я думаю, что пользователи будут ожидать, что он будет размещен где-то под домашним каталогом пользователей в соответствии с условными соглашениями ОС. Если вы настаиваете на том, чтобы он относился к вашим скомпилированным классам, попробуйте использовать методы, описанные в [этом сообщении] (http://stackoverflow.com/a/676413/1276804). Однако я не уверен в надежности таких решений. – zagyi

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