getResourceAsStream()这个方法老师获取不到文件,路径到底怎么配 。文件到底放在哪里????????
用的工具是MyEclipse  我的文件放在哪个目录下??????
请各位说清楚点 我都试了一个下午了 都是错的

解决方案 »

  1.   

    给你一个示例吧:1.配置个监听器package com.easymap.cms.listener;import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Properties;import javax.servlet.ServletContext;
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;import org.apache.log4j.Logger;import com.easymap.cms.HibernateSessionFactory;public class Initialize implements ServletContextListener{ public void contextInitialized(ServletContextEvent sce) {
    initHibernateSessionFactory(sce);
        }

    public void contextDestroyed(ServletContextEvent contextEvent) {
    } private void initHibernateSessionFactory(ServletContextEvent sce){
    String SystemConfig = "/WEB-INF/conf/SystemConfig.properties";
    ServletContext sc = sce.getServletContext();

    try {
    Properties propDBConfig = new Properties();
    propDBConfig.load(sc.getResourceAsStream(SystemConfig));
    String ip = propDBConfig.getProperty("DBServerIPAddress", "127.0.0.1");
    String port = propDBConfig.getProperty("DBServerConnectPort", "1521");
    String database = propDBConfig.getProperty("DBServerDataBaseName", "");
    String user = propDBConfig.getProperty("DBServerUsername", "");
    String pass = propDBConfig.getProperty("DBServerPassword", "");
    new HibernateSessionFactory(ip, Integer.parseInt(port),database, user, pass);
    } catch (FileNotFoundException e) {
    Logger.getLogger(this.getClass().getName()).error("数据库连接环境设置失败:"+e);
    throw new RuntimeException("数据库连接环境设置失败!");
    } catch (IOException e) {
    Logger.getLogger(this.getClass().getName()).error("数据库连接环境设置失败:"+e);
    throw new RuntimeException("数据库连接环境设置失败!");
    }
    }
    }
    2. WEB-INF/conf/SystemConfig.properties
    3.properties文件内容:# EzServiceManager Database Configuration File
    DBServerIPAddress=192.168.10.184
    DBServerConnectPort=1521
    DBServerDataBaseName=dbtest
    DBServerUsername=test
    DBServerPassword=libm413
      

  2.   

    getResourceAsStream方法一般都是配置普通JAVA工程的方法来配置相对路径的。
    而我给你的方法对于web工程比较通用。同时需要说明的是:
    有时候即使你使用getResourceAsStream方法在某一个web容器中能够获取到正确的相对路径。但是换了一个web容器后就不行了。这是因为各web容器的部署文件夹及层次有所不同。以前我也经常遇到你的问题。不过自我在1楼的方法后,就没这困扰了。
      

  3.   

    请问 楼上的 什么叫各WEB容器的部署文件夹及层次不同,和这个有关系吗?
    一般web容器都会有servlet的实现,也会有拿服务器程序根目录的方法,难道不同的web容器还要设置不同的路径???玩笑吧。。例如tomcat,request().getContextPath()可以拿到服务器根路径
    读文件可以用
    String link = request().getContextPath()+/文件夹/文件名;
    xxx.getResourceAsStream(link);
      

  4.   

    你也可以这样试试,服务器根目录下
    String link = /export/文件名;
    xxx.getResourceAsStream(link);
      

  5.   

    你直接把你要读取的properties文件放到src目录下,然后 
    InputStream is=ReaderFile(类名).class.getClassLoader().getResourceAsStream("文件名");
    就可以读到
      

  6.   

    lz 直接在文件放在src下面就可以了。
      

  7.   

    放在WebRoot下就可以吧,路径可以是/WEB-INF/***.txt.
      

  8.   

    另外调用此方法的ServletContext 可以通过request.getSession(true).getServletContext()获得。
      

  9.   

    ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(文件名);
    别忘给分啊
      

  10.   

    LZ,请问你调的是哪个对象的getResourceAsStream()方法。
    如果是在当前web应用下,就直接拿到ServletContext即当前web应用,具体代码:ServletContext Context = getServletContext();当然也可以通过request.getSession().getServletContext()来拿到web应用
    再通过context.getResourceAsStream("/文件夹名/文件名");就可以拿到一个InputStream了。
    在当前web应用下也可以通过request.getRealPath()得到web应用中文件在tomcat服务器中的绝对路径,也就是该文件在硬盘上的绝对路径。你可以通过该路径new 出一个FILE,进而进行读写。
    实际上一般做文件的上传下载,文件不会存储在数据库中,但会在数据库中存一个uri地址,我们可以通过,
    request.getRequestUri()来得到该地址,uri地址格式如下/当前web应用名/Servlet映射名,罗嗦了这么多,关键想问问楼主是怎么调的getResourceAsStream()方法,希望对你有帮助。
      

  11.   

     对不起,上面最后一点写错了,刚躺下发现自己说的不对,request.getRequestURI()是得到当前请求的URI地址,不好意思啊,其实还有一个方法是ServletContext context = getServletContext();
    context.getResource("/文件夹名/文件名")返回的是一个URL地址得到这个也能进行对文件的读写操作。
      

  12.   

    对文件路径path做处理,把一捺换成一撇,path.replace("\\","/");
      

  13.   

    放在src根目录下,方法参数不用加其他路径,直接文件名,如果还找不到那就是你文件名问题
      

  14.   

    SRC目录下
    getResourceAsStream("文件名");
    就行了