我webapps的目录结构是这样的,一个upload文件夹,里面放一些文件。有一个website文件夹,这是我的项目工程文件夹。我现在要在website这个项目的Action类中,new一个File对象,希望构造一个upload文件夹下的一个文件对象。这时候我new File( "" )的时候,参数该怎么写啊?这个怎么样取到upload里面的文件呢?工程架构为ssh。谢谢!

解决方案 »

  1.   

    先取到你项目的路径public static String getAbsPathOfProject() {
    String url = FileUtil.class.getClassLoader().getResource("").toString();
    // Win file:/E:/projects/Eclipse/workspace/SAS-Studio/WEB-INF/classes/
    // Linux file:/home/share/SAS-TOMCAT/webapps/SAS/WEB-INF/classes/
    String reg0 = "file:(.+?)WEB-INF"; // 在Tomcat下
    Matcher mat0 = Pattern.compile(reg0, Pattern.CASE_INSENSITIVE).matcher(
    url);
    String reg1 = "file:(.+?bin/)"; // 应用程序下
    Matcher mat1 = Pattern.compile(reg1, Pattern.CASE_INSENSITIVE).matcher(
    url);
    Matcher mat = mat0.find() ? mat0 : mat1;
    if (mat.find(0)) {
    String path = mat.group(1);
    path = path.replaceAll("/", "\\" + File.separator);
    return File.separator.equals("\\") ? path.substring(1) : path;
    }
    return null;
    }
    再加上upload\\文件名
      

  2.   

    楼上,upload不在我的工程里面,也行吗?
      

  3.   

    还有忘说了。。upload是一个虚拟目录,专门的文件上传服务器上映射过来的。。所以没法用物理地址呀。
      

  4.   

    servlet中获得项目绝对路径
    String filePath=this.getServletConfig().getServletContext().getRealPath("/");根目录所对应的绝对路径:request.getServletPath();文件的绝对路径 :request.getSession().getServletContext().getRealPath(request.getRequestURI())当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");建议参考http://tmsoft.lsxy.com/index.php?id=589&load=read