我的src 下面有个servlet :     package com.test.servlet;
在又在外面建了个文件夹(不是在src和webroot下面):powerpoint
在powerpoint里面放了个a.ppt
servlet路径:src/com/test/servlet/a.java;
ppt路径:powerpoint/a.ppt;
我在servlet里面要调用ppt,问题在servlet里面a.ppt的相对路径是什么?
谢谢!

解决方案 »

  1.   

    你既然提到了servlet,那你的工程一定是web工程,
    web工程是部署在服务器上的,假定你的工程名叫demo
    那么在servlet中你能获得的路径就是相对于/demo下的
    所有路径。你的ppt如果不在这个工程中,而又要对其进行
    IO操作,没有绝对路径是不行的。一般都会把工程中要用
    的文件放在WebRoot或WebContent也就是web应用的根目录
    或其子目录下,并用相对路径访问。
      

  2.   

    ppt路径:powerpoint/a.ppt 这个加入到WEB项目中来.
    再访问就简单多了.楼上说的太对了,参考!
      

  3.   

    现在我在WebRoot下面建了文件夹,并把a.ppt放到了该文件夹里面
    在servlet里面改相对路径:
    (1).ppt=new File("/PowerPoint/a.ppt");
    (2).ppt=new File("PowerPoint/a.ppt");
    那ppt还是访问不到,Servlet代码如下:public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException { response.setContentType("application/vnd.ms-powerpoint");
    ServletOutputStream out = response.getOutputStream();
    File ppt = null;
    BufferedInputStream buffer = null;
    try {
                            //////////////////////////////////////////////
    ppt=new File("PowerPoint/a.ppt");
                            /////////////////////////////////////////////
    response.setContentLength((int) ppt.length());
    FileInputStream fileInput = new FileInputStream(ppt);
    buffer = new BufferedInputStream(fileInput);
    int readBytes = 0;
    while ((readBytes = buffer.read()) != -1) {
    out.write(readBytes);
    }
    } catch (IOException exception) {
    System.out.println("the file was not found !");
    } finally {
    if (out != null) {
    out.close();
    }
    if (buffer != null) {
    buffer.close();
    }
    }
    }
      

  4.   

    用绝对路径把,
    你powerpoint下的a.ppt又发布不到Tomcat下的,
    因为你的a.ppt文件没在webroot下。
      

  5.   

    我现在已经把在webroot下建了文件夹,并把a.ppt放到了该文件夹里面
    ppt=new File("PowerPoint/a.ppt");
    这样不行。
      

  6.   


    你这样访问应该就可以了 response.sendRedirect(request.getRequestURL()+"PowerPoint/a.ppt");
      

  7.   

    谢谢!
    我在webroot下面建了一个PowerPoint文件夹,把ppt放到了这个文件夹里面。
    ppt=new File("PowerPoint/a.ppt");
      

  8.   

    如果你的路径是 WebRoot/PowerPoint/a.ppt你可以试试 ppt=new File(request.getRealPath()+"/PowerPoint/a.ppt");好像是它,反正是用realpath得到站点发布后在服务器上的绝对路径后就可以建File对象了
      

  9.   

    <%=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/ppt/a.jsp" %>
      

  10.   

    这么麻烦??
    把a.ppt所在文件夹加到classpath中,读起来就很方便了
      

  11.   

    request.getRealPath("/") + "()+"PowerPoint\\a.ppt"; 
    这样写就可以啦!!
    给我加分啊!
      

  12.   

    request.getRealPath("/") + "()+"PowerPoint\\a.ppt"; 
    这样写就可以啦!!
    给我加分啊!
      

  13.   

    request.getRealPath("/") + "()+"PowerPoint\\a.ppt"; 这样写就可以啦!这样是取的相对路径,移植时也不用改的!
    给我加分啊!
      

  14.   


    String path=servlet.getServletContext().getRealPath("/"+"PowerPoint\\a.ppt");
    ppt=new File(path); 试试可以吗 我记得以前的时候我是这么写的
      

  15.   

    String path=servlet.getServletContext().getRealPath("/"+"PowerPoint\\a.ppt"); 
    这样应该可以
      

  16.   

    ppt=new File(this.getClass().getClassLoader().getResource("../").getPath()+ "PowerPoint/a.ppt")
      

  17.   

    ppt=new File("/工程名称/PowerPoint/a.ppt"); 
    加上自己的工程名称应该是可以用的
      

  18.   

    已经有LS的说过了,request.getRealPath("/")获取相对路径,再加你的存放ppt的路径就可以了!
      

  19.   

    你可以tomcat中配置一个虚拟路径:在server.xml文件<host>下加入<Context path="/powerpoint" docBase="E:\powerpoint" crossContext="true" reloadable="true"/>;
    然后现servlet中调用this.getServletContext().getContext("/powerpoint").getRealPath("/")(绝对路径);
    直接用http://localhost:8080/powerpoint/a.ppt(相对路径)。
      

  20.   

    2楼说的很对,你要是不把ppt加入到工程中来的话,访问的时候就得绝对路径了。
      

  21.   

    楼主试试这样,看行不?ppt=new File("../PowerPoint/a.ppt");
      

  22.   

    这样子就行了
    String path=request.getRealPath("PowerPoint");
    FileReader fr=new FileReader(path + "\\a.ppt");
      

  23.   

    你既然提到了servlet,那你的工程一定是web工程, 
    web工程是部署在服务器上的,假定你的工程名叫demo 
    那么在servlet中你能获得的路径就是相对于/demo下的 
    所有路径。你的ppt如果不在这个工程中,而又要对其进行 
    IO操作,没有绝对路径是不行的。一般都会把工程中要用 
    的文件放在WebRoot或WebContent也就是web应用的根目录 
    或其子目录下,并用相对路径访问。