I'm serving a file from the file system dynamically with a jsp
Here's my code:
<%@ page import="java.io.*,java.util.*"
    InputStream in = null;
    OutputStream responseOut = null;
    File  file  = new File(request.getAttribute("fileToServe"));
    try{
        in = new FileInputStream(file);
        responseOut = response.getOutputStream();
        // Transfer bytes from in to out
        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            responseOut.write(buf, 0, len);
        }
    }finally{
         if( responseOut != null ) try {
            responseOut.close();
         } catch( IOException ioe ){}
        if( in != null ) try {
            in.close();
         } catch( IOException ioe ){}
    }
    file.delete();
%>
The problem I'm facing is, the file is delete only the first time the code is run, which is after the server restart. Subsequent calls doesn't delete the file.
I used ProcessExplorer to track this and and yeap, the Java VM is holding that file, I don't really know why is this happening.
We will run on Windows OS, always, is there a work around for this?
I've found a number of resources on the internet about this, but I can't figure out from them how to solve this problem.