2014-12-14 3 views
0

Я изучаю программирование сервлета в java, используя tomcat 7 в качестве сервера, eclipse как IDE и ubuntu в качестве ОС. Мне нужно открыть файл «xyz.txt» в папке META-INF, но я хочу сделать это независимо от рабочей среды (файловая система, ОС, IDE, сервер, разработка разработки env ...). Я искал часы для ответа на этот вопрос, но не успел. Я прочитал, что должен использовать код, подобный приведенному ниже, но все эти строки кода дают мне значение null (это в методе Servlets doGet, возможно, это неправильное место для такого кода, но оно предназначено только для обучения):Как открыть файл в META-INF независимо от среды

this.getClass().getResource("META-INF/xyz.txt"), 
this.getClass().getResource("/META-INF/xyz.txt"), 
this.getClass().getResourceAsStream("META-INF/xyz.txt"), 
this.getClass().getResourceAsStream("/META-INF/xyz.txt"), 
this.getClass().getClassLoader().getResource("META-INF/xyz.txt"), 
this.getClass().getClassLoader().getResource("/META-INF/xyz.txt"), 
this.getClass().getClassLoader().getResourceAsStream("META-INF/xyz.txt"), 
this.getClass().getClassLoader().getResourceAsStream("/META-INF/xyz.txt"), 

Редактировать: Есть ли способ, чтобы объект java.io.File указывал на файл xyz.txt?

ответ

1

Используйте context.getRealPath, чтобы получить абсолютный путь и создать объект файла для доступа к файлу:

File file = new File(getServletContext().getRealPath("META-INF/xyz.txt")); 
+0

Да, вот и все! Спасибо. – Marko

1

Используйте метод ServletContext. Например. getResourceAsStream(). Попробуйте следующий код внутри doGet():

ServletContext context = getServletContext(); 
InputStream inStream = context.getResourceAsStream("/META-INF/xyz.txt"); 
+0

getResourceAsStream работает, но getResource дает мне URL в форме JNDI:/localhost/projectname/META-INF/xyz.txt, который я не знаю, как использовать на самом деле. Мне просто интересно, есть ли способ, чтобы объект java.io.File указывал на xyz.txt? – Marko

+0

Вы имеете в виду что-то вроде: 'File f = new File (context.getResource (path) .toURI());'? –

+0

Если вы поместите правильный путь, и он не работает (я не могу проверить его прямо сейчас), вы должны использовать решение @Sas. –

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