是这样的,假如我把jsp页面都放在Tomcat5.5\\webapps\\File文件夹中。如下代码:
<%@ page contentType="text/html;charset=gb2312" import="java.io.*"%>
<html>
<head>
<title>查询页面</title>
</head>
<body>
<center>
<%  
     /*String pth=request.getRealPath("./");
 File fl=new File(pth,"\\smp188a.jsp");*/
 File fl=new File("C:\\Tomcat5.5\\webapps\\File\\smp188a.jsp");  
   out.println("文件或目录是否存在:"+fl.exists());
   out.println("<br>是文件吗:"+fl.isFile());
   out.println("<br>是文件夹吗:"+fl.isDirectory());
   out.println("<br>名称:"+fl.getName());
   out.println("<br>路径:"+fl.getPath());
   out.println("<br>绝对路径:"+fl.getAbsolutePath());
   out.println("<br>文件大小:"+fl.length()+"字节");
   %>
   </center>
   </body>
   </html>
书上所有的代码都是按红色那种路径模式写的,但我根本编译不了,不知为什么。还有就是这样的,比如我要遍历目录写一段代码:
<%@ page contentType="text/html;charset=gb2312" import="java.io.*"%>
<html>
<head><title>文显示</title>
</head>
<body>
<center>
<h1>该文件夹下存在下列文件和文件夹</h1>
<table width="500" align="center" border="1">
<%
   String pth=request.getRealPath("./javasmp/ch16");
   File fl=new File(pth);
  
   String str[]=fl.list();
   for(int i=1;i<str.length;i++){
    File f=new File(pth+str[i]);
out.println("<tr><td bgcolor=yellow>"+str[i]+"</td></tr>");
}
%>
</table>
</center>
</body>
</html>
我把文件存放在"C:\\Tomcat5.5\\webapps\\ROOT\\javasmp\\ch17文件夹中,那么这样我可以按照上面写的遍历ch16文件夹(ch16与ch17同在javasmp下,而该被编译的文件代码放在ch17中),但是如果我这样写:
<%@ page contentType="text/html;charset=gb2312" import="java.io.*"%>
<html>
<head><title>文显示</title>
</head>
<body>
<center>
<h1>该文件夹下存在下列文件和文件夹</h1>
<table width="500" align="center" border="1">
<%
   File fl=new File("C:\\Tomcat5.5\\webapps\\ROOT");  
   String str[]=fl.list();
   for(int i=1;i<str.length;i++){
    File f=new File("C:\\Tomcat5.5\\webapps\\ROOT"+str[i]);
out.println("<tr><td bgcolor=yellow>"+str[i]+"</td></tr>");
}
%>
</table>
</center>
</body>
</html>
也就是我把该编译的文件放在"C:\\Tomcat5.5\\webapps\\File文件夹中,用该文件去执行遍历"ROOT“的文件夹(ROOT文件夹与File文件夹同在webapps文件夹下),无论是按照书上写的路径那样,还是模仿第一个通过的代码路径那样写,都通不过。郁闷死了,折腾一上午了,都没搞明白,希望大家帮帮我,躬谢了!
(都是在Tomcat下编译的)
  

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【gjk11】截止到2008-06-26 14:13:30的历史汇总数据(不包括此帖):
    发帖数:5                  发帖分:130                
    结贴数:5                  结贴分:130                
    未结数:0                  未结分:0                  
    结贴率:100.00%            结分率:100.00%            
    敬礼!
      

  2.   

    看篇文章,相信能解决你的问题:
    java相对路径与绝对路径总结
    http://gmf.javaeye.com/blog/117978  
      

  3.   

    首先,我运行了这段:应用服务器用的resin-3.1.5
    <%@ page contentType="text/html;charset=gb2312" import="java.io.*"%> 
    <html> 
    <head> 
    <title>查询页面 </title> 
    </head> 
    <body> 
    <center> 
    <%  
        /*String pth=request.getRealPath("./"); 
    File fl=new File(pth,"\\smp188a.jsp");*/ 
    File fl=new File("C:\\Tomcat5.5\\webapps\\File\\smp188a.jsp");  
      out.println("文件或目录是否存在:"+fl.exists()); 
      out.println(" <br>是文件吗:"+fl.isFile()); 
      out.println(" <br>是文件夹吗:"+fl.isDirectory()); 
      out.println(" <br>名称:"+fl.getName()); 
      out.println(" <br>路径:"+fl.getPath()); 
      out.println(" <br>绝对路径:"+fl.getAbsolutePath()); 
      out.println(" <br>文件大小:"+fl.length()+"字节"); 
      %> 
      </center> 
      </body> 
      </html>
    没有什么错误,运行结果如下:
    文件或目录是否存在:false 
    是文件吗:false 
    是文件夹吗:false 
    名称:smp188a.jsp 
    路径:C:\Tomcat5.5\webapps\File\smp188a.jsp 
    绝对路径:C:\Tomcat5.5\webapps\File\smp188a.jsp 
    文件大小:0字节 
    我觉得是这样:
    lz用绝对路径去访问文件绝对没有错,换成相对路径也是一样,比如a文件位于C:\Tomcat5.5\webapps\File\,b文件我不管它在哪,用绝对路径也就是C:/Tomcat5.5/webapps/File/a.jsp肯定是没有错的,如果你路径这么写:../b.jsp(b.jsp),编译器会默认到你a文件(也就是被编译的文件)位置去找b文件,如果两个文件都位于同一个文件夹中,那么你两种路径用哪个都可以但是我觉得问题不在这:lz说根本编译不了,那就是语法错误咯,可是我真没发现有啥问题,不行你就把已经编译过的字节码文件都delete,然后在试试吧,被编译的文件到这去找:..\WEB-INF\work\_jsp
      

  4.   

    你可以用Java类去测试你的想法,没必要非得在tomcat之类的容器里。指定绝对路径是最简单,但最不灵活的。