自己定义了一个book.xml放在WEB-INF下,现想在类中用new FileInputStream("book.xml"),但提示找不到路径,请问如何访问WEB-INF下的自定义文件,

解决方案 »

  1.   

    new FileInputStream("/WEB-INF/book.xml"),
      

  2.   

    这方法试了,还是报错的
    java.io.FileNotFoundException: \WEB-INF\book.xml (系统找不到指定的路径。)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:106)
    at java.io.FileInputStream.<init>(FileInputStream.java:66)
    at com.cgd.JavaReadXml.readXML(JavaReadXml.java:16)
    at org.apache.jsp.upload2_jsp._jspService(upload2_jsp.java:67)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Thread.java:595)
      

  3.   


    new FileInputStream(new File(Thread.currentThread().getContextClassLoader().getResource("")).getParent.getPath()+File.separator+"book.xml");能用么?
    够丑么?
      

  4.   

    我把文件放到classes上了
    String filePath = null;
      java.net.URL confURL = getClass().getClassLoader().getResource("book.xml");
      if (confURL == null)
       confURL = getClass().getClassLoader().getResource(
         "META-INF/" + "book.xml");
      if (confURL == null)
       confURL = Thread.currentThread().getContextClassLoader()
         .getResource("book.xml");
      if (confURL == null) {
       System.err.println(" cann't find config file:-->" + "book.xml");
      } else {
        filePath = confURL.getFile();
       filePath = filePath.substring(1);
       filePath = filePath.replace("%20", " ");
       System.out.println(filePath);获取到了,谢谢各位
      

  5.   

    对于你这种可以放到classes文件下的读取你可以这么实现,如果我说读取META-INF下的context.xml文件,难道你也要放到classes下面么,不能了吧,解决方法:File file = new File(new File(ToDBUtil.class.getResource("/").toURI()).getParentFile().getParentFile().getAbsolutePath() + "/META-INF/context.xml");---ToDBUtil是我的类名,你可以改为你的类名。