Я использую wicket для отправки больших (~ 2Gb +) zip-файлов в веб-приложение, для обработки zip-файла. Я использую классы java.util.zip. *, И мне нужно иметь возможность читать произвольнозаписи из почтового файла.Итак, мой код выглядит примерно так:
class MyForm extends Form {
private FileUploadField fileField;
MyForm(String id) {
super(id);
fileField = new FileUploadField("upload");
add(fileField);
}
@Override
protected void onSubmit() {
FileUpload fileUpload = fileField.getFileUpload();
File file = fileUpload.writeToTempFile();
ZipFile zipFile = new ZipFile(file);
// Do more stuff
}
}
Поскольку загрузка велика, при разборе запроса она помещается в временный файл, но затем writeToTempFile () копирует его в другой временный файл, поэтому теперь у меня естьдве копии файла на диске.Это тратит впустую дисковое пространство, дисковый ввод-вывод и увеличивает время обработки запроса.
Я не могу использовать ZipFileInputStream, поскольку мне нужно получить доступ к файлам в случайном порядке.Есть ли способ остановить дублирование файла калитки на диске?