事情是这样的,我做一个生成报表的方法,要求可以下载,可以删除服务器上生成的报表。
但现在下载后服务器文件就无法删除了,不下载直接删除是可以的。。
我用的方法是直接url打开该文件,如<a href='/export/print/1.zip'>1.zip</a>,然后文件就被锁住了。
目前来看是只能强制删除了,谁能提供个强制删除的方法不?或者告诉我有什么其他方法可以达到这一目的?ps:用360解除占用文件的功能,有时可以发现该文件被jdk/bin/javaw.exe占用了,有时却提示没有被占用,反正就是无法删除,在服务器这手动删也删不掉。

解决方案 »

  1.   

    是直接用url打开的,下载功能应该算是浏览器提供支持的,我就写了一个a的标签,其他啥也没写所以不知道该怎么办啊。
      

  2.   

    哎没人回我,为什么我总是这么可怜,问的问题没人回,昨天弄了一天,钻牛角尖了,想强制删除,最后还是新建了一个download.jsp的页面,用自己写的下载代码来做了。代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
        <head>
            <%@ page contentType="text/html; charset=UTF-8" deferredSyntaxAllowedAsLiteral="true"%>
            <%@ page import="java.net.URLEncoder,java.io.*"%>    </head>
        <body>
               <%
        response.reset();//可以加也可以不加
        response.setContentType("application/x-download");
        String folder=request.getParameter("folder");
        String filename=request.getParameter("filename");
        String realPath = request.getRealPath("");
        String filenamedownload =realPath+File.separator+"export"+File.separator+folder+File.separator+filename;
        System.out.println(filenamedownload);
        String filenamedisplay =filename;//系统解决方案
        //filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8");
        //因为文件名有中文,所以在这需要转为iso8859-1
        filenamedisplay = new String(filenamedisplay.getBytes("UTF-8"),"iso8859-1");
        response.addHeader("Content-Disposition","attachment;filename=" + filenamedisplay);    OutputStream output = null;
        FileInputStream fis = null;
        try
        {
            output  = response.getOutputStream();
            fis = new FileInputStream(filenamedownload);        byte[] b = new byte[1024];
            int i = 0;        while((i = fis.read(b)) > 0)
            {
                output.write(b, 0, i);
            }
            output.flush();
        }
        catch(Exception e)
        {
            System.out.println("Error!");
            e.printStackTrace();
        }
        finally
        {
            if(fis != null)
            {
                fis.close();
                fis = null;
            }
            if(output != null)
            {
                output.close();
                output = null;
            }
        }
    %>
        </body>
    </html>
      

  3.   

    我又把它改成通过servlet下载的方式了- -,本来一个url就能解决的问题 绕了这么久,还写了这么多代码。。哎,这java有待改善啊
      

  4.   

    可以的。我用url就实现了。可能你没有关fis