Je sers un fichier du système de fichiers dynamically with a jspImpossible de supprimer un fichier après l'avoir lu
Voici mon 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();
%>
Le problème que je suis confronté est, le fichier est supprimer uniquement la première fois que le code est exécuté, ce qui est après le redémarrage du serveur. Les appels suivants ne supprime pas le fichier.
J'ai utilisé ProcessExplorer pour suivre cela et, et yeap, la machine virtuelle Java détient ce fichier, je ne sais pas vraiment pourquoi cela se produit.
Nous fonctionnerons sur Windows OS, toujours, y at-il un travail pour cela?
J'ai trouvé un certain nombre de ressources sur Internet à ce sujet, mais je ne peux pas comprendre d'eux comment résoudre ce problème.
Qu'est-ce qui crée ce fichier? – cletus
Le code entre-t-il dans le bloc catch (IOException ioe) lorsque vous appelez in.close()? –
N'attrapez pas les exceptions que vous ne pouvez pas gérer, puis supprimez-les. Laissez-les se propager à l'appelant ou, au minimum, les enregistrer. –