大家好,我在Eclipse中键了一个web工程test,然后在test/src下放了一个Excel文件,即test/src/excel.xls,然后在程序中想要读取它,使用"/excel.xls"路径不行吗?后来放到WebRoot下,即test/WebRoot/excel.xls,还是不行,请问在eclipse中"/"代表什么路径呢?我的目的是部署到服务器上,我tomcat服务器的appBase是webapps目录,而我直接把那个excel文件放在该目录下,然后在程序中用路径"/excel.xls",还是不行,请指教,谢谢~谢谢~~

解决方案 »

  1.   

    eclipse中"/"代表的是一层
    比如 你有个文件夹 myspace 在文件夹下面有 a文件夹  a 文件夹下面又有 c文件夹
    然后c文件夹下面有 d.jsp
    你就可以这样获取路径了:/myspace/a/c/d.jsp
    这样就找到了你需要的d.jsp了。
      

  2.   

    既然发布到服务器上,应该取得绝对路径比较好
      java.net.URL url = ClassName.class.getResource(""); // ClassName为这个调用类的名字
      String pathPrefix = url.getPath().substring(); // 字符串截取
      excelFilePath = pathPrefix + "excel.xls"; // 拼出绝对路径。
      

  3.   

    你放到项目的要目录下
    "/excel.xls"这样读取就正确
      

  4.   

    XXXForm form = (XXXForm) request.getAttribute("XXXForm ");String contextPath = request.getContextPath();在用的時候,像這樣用:<img src="<%= contextPath %>/images/spacer.gif"
      

  5.   

    多谢各位,按各位的说法尝试后,我发现:1、java.net.URL url = DrawingContentAction.class.getResource("图纸目录模板.xls"); 发现url为null,可是我确实在工程下放了图纸目录模板.xls,而且为了测试,我还在不止一个地方放了;2、经测试,我发现当前目录是tomcat中的bin目录;3、request.getContextPath();返回的是/test,test是工程名。所以,依然解决不了问题,不解的是,1中所提。
      

  6.   

    其实问题就是:eclipse下一个web工程
                       test
                      |__src
                      |   |______testjava
                      |              |_____Test.java
                      |
                      |__WebRoot
                            |____aaa
                                  |________excel.xls现在要在Test.java中读取excel.xls,这个路径如何取?谢谢~~
      

  7.   

    我建议你将excel.xls文件换成excel.java文件,然后读取它,看是否能读取成功,
      

  8.   

    1.如果你是用eclipse部署到tomcat服务器上,在webapps目录会出现test目录工程,则test就是你的ContextPath,即你所说的"/",那么你把excel.xls放在test目录下就可以了.
    2."我tomcat服务器的appBase是webapps目录,而我直接把那个excel文件放在该目录下",这样是不成的,如果没有你自己的test的目录,tomcat自带的root目录你也可以用,把root下的东东清空,把你的项目中WebRoot下的所有东东放进去也可以
      

  9.   

    按我上面的方法走,然后直接/aaa/excel.xls 使用肯定没问题
      

  10.   

    你在web工程中建一个Test.java,如果不通过jsp或servlet去调用,又有什么作用呢?如果在jsp或servlet中调用,可以给Test.java传递一个request对象,通过
    request.getContextPath()+"/aaa/excel.xls";就可以得到excel.xls
      

  11.   

    跟eclipse没有关系,找的是你机器的绝对路径
      

  12.   

    如果是用web工程运行的话,'/'代表你工程的根路径WebRoot
      

  13.   

    '/'代表你工程的根路径WebRoot,你要是在程序中读取文件的话,就把excel文件放在跟程序相同的路径里,例如放放到你的testjava里面,然后不需要写任何路径就可以直接读取!
      

  14.   

    给你个例子,下面的程序读同路径下的db.properties文件:
    package netbar;/* 访问数据库工具类
     */
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.Properties;public class Dbconn {
    private static Properties props = new Properties();
    static {
    InputStream in = Dbconn.class.getResourceAsStream("db.properties");
    try {
    props.load(in);
    Class.forName(props.getProperty("driver"));
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    try {
    in.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    } public static Connection getConnection() {
    Connection con = null;
    try {
    con = DriverManager.getConnection(props.getProperty("url"), props
    .getProperty("user"), props.getProperty("pwd"));
    } catch (Exception e) {
    e.printStackTrace();
    }
    return con;
    } public static void close(Object o) {
    try {
    if (o instanceof ResultSet) {
    ((ResultSet) o).close();
    } else if (o instanceof Statement) {
    ((Statement) o).close();
    } else if (o instanceof Connection) {
    ((Connection) o).close();
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    } public static void close(ResultSet rs, Statement stmt, Connection con) {
    if (rs != null) {
    try {
    rs.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    if (stmt != null) {
    try {
    stmt.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    if (con != null) {
    try {
    con.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
    }
      

  15.   

    楼上各位说的都是正确的,我用request.getContextPath() + "/aaa/excel.xls",调试时得到的路径是
    "/test/aaa/excel.xls",而且%TOMCAT_HOME%/webapps/test/aaa/excel.xls确实存在,但是调用
    new File("/test/aaa/excel.xls").exists()返回的就是false,为什么呢?这路径应该没问题吧。请指教。
      

  16.   

                      test 
                      |__src 
                      |  |______testjava 
                      |              |_____Test.java 
                      |              |_____ excel.xls 
                      |                
                      |
                      |__WebRoot 
    就是这样的,你试试!
      

  17.   

    new File("/test/aaa/excel.xls").exists()这个函数的意思是什么呢?好象是如果不存在这个文件的话就返回true,新建文件,存在的话就返回false,不新建文件,你再看看,我也是猜的,呵呵!
      

  18.   


    对,应该是这样的,但是我这边还是不行,new File("...").exists()是判断当前文件是否存在,如果在就是true,但我每次都是false,而如果用了绝对路径,就是true了。太奇怪了。
      

  19.   

    如果是用web工程运行的话,'/'代表你工程的根路径WebRoot
    然后直接/aaa/excel.xls 使用应该是没问题。