Tomcat создает 0-байтовые файлы - PullRequest
1 голос
/ 01 июля 2010

У меня очень простой механизм загрузки файлов в Java.Я просто беру файл и сохраняю его на сервере.Я тестирую этот простой код с селеном, и когда в тесте на селен происходит тайм-аут, tomcat создает файлы 0 байт в каталоге tomcat_home / work / Catalina / localhost / uploadServlet / как файлы MultiPart *.Он создает тысячи файлов, пока на устройстве не останется места на диске.Что может вызвать эту проблему?Как я могу решить это?У кого-нибудь есть идеи по этому поводу?

Моя среда: Ubuntu - сервер 8.04, apache tomcat - 5.5.29, sun java 1.6

Спасибо,

Вотфрагмент кода, который я использую

    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();
    }

Ответы [ 2 ]

1 голос
/ 22 ноября 2010

Я использовал Apache Commons File Upload класс, и я удалил временные файлы в разделе, наконец. Проблема решается с помощью этой реализации.

0 голосов
/ 01 июля 2010

Возможно ли, что какое-то исключение происходит в середине этого кода?Лучше всего закрыть потоки в блоке finally.

...