J'ai un mécanisme de téléchargement de fichiers très simple dans java. Je prends juste le fichier et l'enregistre sur le serveur. Je suis en train de tester ce code simple avec du sélénium et quand un timeout survient dans le test de sélénium, tomcat crée des fichiers de 0 octets sous le répertoire tomcat_home/work/Catalina/localhost/uploadServlet/en tant que fichiers MultiPart *. Il crée des milliers de fichiers, jusqu'à ce qu'il n'y ait plus d'espace disque sur l'appareil. Qu'est-ce qui peut causer ce problème? Comment puis-je resoudre ceci? Est-ce que quelqu'un a une idée à ce sujet?Tomcat crée des fichiers de 0 octet
Mon environnement est: Ubuntu - 8,04 serveur, tomcat apache - 5.5.29, Sun Java 1.6
Merci,
Voici l'extrait de code que j'utilise
String strFileName = request.getParameter("FileName");
String strPath = request.getParameter("Path");
File fFile = (File) request.getAttribute("Content");
int index = strPath.length() - 1;
if (strPath.charAt(index) != '/') {
strPath += "/";
}
if (! new File(strPath).exists()) {
new File(strPath).mkdirs();
}
File file = new File(strPath + strFileName);
FileOutputStream fileOutputStream = new FileOutputStream(file);
FileInputStream fileInputStream = new FileInputStream(fFile);
byte[] bBuf = new byte[1024];
int iBufLen = 0;
int iReadLen = 1024;
int iTotelLen = 0;
/*read 1024 bytes at a time*/
while ((iBufLen = fileInputStream.read(bBuf)) != -1) {
fileOutputStream.write(bBuf);
fileOutputStream.flush();
iTotelLen += iBufLen;
if (fileInputStream.available() < iReadLen) {
iReadLen = fileInputStream.available();
break;
}
}
byte[] tempbBuf = new byte[iReadLen];
fileInputStream.read(tempbBuf, 0, iReadLen);
fileOutputStream.write(tempbBuf);
fileOutputStream.close();
fileInputStream.close();
if (fFile.exists()) {
fFile.delete();
}
Aidez-nous à vous aider en affichant votre code actuel :-) –
Appelez-vous 'flush()' et ou 'close()' sur 'OutputStream' ou' Writer' après avoir écrit le fichier? – Jesper
j'ai édité le poste et inséré le code simple –