2015-09-26 3 views
0

, поэтому я ищу, чтобы портировать .jar в исполняемый файл и немного очищаю свой код, прежде чем я это сделаю. Сейчас у меня есть следующие:Абсолютный путь к локальному файловому объекту

BufferedImage bgImg = null; 
//Grabs the background image 
    try { 
     bgImg = ImageIO.read(new File("")); 
    } catch (IOException e1) { 
     e1.printStackTrace(); 
    } 

У меня есть несколько других изображений, которые я могу просто использовать:

new ImageIcon(getClass().getResource("imagename.png"))); 

Однако, поскольку первое является объектом File он не принимает тот же тип аргументов , Мне было интересно, есть ли что-то подобное, что я могу использовать для этого, или если есть какой-то другой способ сделать файл абсолютным, чтобы не было ошибок при переносе на исполняемый файл. Благодаря!

+0

Пустое имя файла, конечно, не работает. Где будет файл? У вас есть способ узнать путь к файлу? Всегда ли это в одном каталоге? Или это будет в каталоге относительно того, что вы знаете? – RealSkeptic

+0

Да, это было мое плохое, до этого у меня было что-то заполненное несколькими вещами (т. Е. Сбойные попытки доступа к файлу с использованием относительного каталога, просто имя файла и т. Д.). Первоначально я имел это с точным путем к моему рабочему столу, но я переместил его в папку в рабочем каталоге проекта. – finaris

ответ

1

Используйте метод read(InputStream input) вместо с Class.getResourceAsStream().

Например:

bgImg = ImageIO.read(getClass().getResourceAsStream("imagename.png")); 
+0

Это тоже работает. Оглядываясь назад, теперь имеет смысл (поскольку я использовал это в параметрах нового File()). – finaris

1

Я не уверен, что вы хотите сделать. Но вы можете получить доступ к файлу в текущем рабочем каталоге с точкой до пути.

E.g.

ImageIO.read(new File("./imagename.png")); 
+0

Это в значительной степени поместило меня на правильный путь, он работает так, как предполагалось сейчас! – finaris

+1

@finaris '. /' Будет относиться к тому, к которому когда-либо каталог пользователя запускает код, если только вы не смените рабочий каталог в первую очередь. С точки зрения переносимости вам лучше использовать методы 'getResources *', которые будут использовать путь к классам, а не –

+0

@finaris Alastair. Что вы мешаете «портированием на исполняемый файл»? Исполняемая банка (тогда вы можете использовать ресурсы classpath, как раньше)? Или исполняемый файл не-java? Во втором случае большинство языков программирования дают вам массив аргументов (например, в основном java). Иногда вы можете получить доступ к пути к вашему исполняемому файлу с индексом 0. –

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