問題:前幾天,碰到了需要從web應用讀取文件內容的問題。一般的,配置文件都放在工程src目錄下,那樣讀起來也很方便,對於大多數人都是這種習慣。但這次偏偏就放在WebContent目錄下的子目錄裡,雖然郁悶,問題還是要解決的。因此在此聊記一筆。
解決方法:XXX.class.getResourceAsStream(Path)獲取流對象,要明白部署後目錄的變化
實例:
- import Java.io.IOException;
- import Java.io.InputStream;
- import Javax.servlet.ServletContextEvent;
- import Javax.servlet.ServletContextListener;
- public class MyListener implements ServletContextListener {
- @Override
- public void contextDestroyed(ServletContextEvent arg0) {
- }
- @Override
- public void contextInitialized(ServletContextEvent event) {
- //指定要讀取的文件路徑,此處的test.txt放在工程的web目錄下面
- InputStream is = MyListener.class.getResourceAsStream("/../../web/test.txt");
- if(is!=null){
- byte []bytes = new byte[1024];
- try {
- while(is.read(bytes)>0){
- System.out.println(bytes.toString());
- }
- } catch (IOException e) {
- e.printStackTrace();
- }finally{
- if(is!=null){
- try {
- is.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
- }
工程目錄結構圖: