Сначала я поставлю свой код:
@Post
public Representation post(InputStream zip) throws Throwable {
createFile(zip, "C:/temp\abc.zip");
return new StringRepresentation("File uploaded");
}
public void createFile(InputStream zipStream, uploadedFileLocation) throws Exception {
try {
writeToFile(zipStream, uploadedFileLocation);
FileUtils.forceDelete(new File(uploadedFileLocation));
} catch (Exception e) {
throw e;
}
}
private void writeToFile(InputStream uploadedInputStream, String uploadedFileLocation) {
try {
OutputStream out = new FileOutputStream(new File(uploadedFileLocation));
int read = 0;
byte[] bytes = new byte[1024];
out = new FileOutputStream(new File(uploadedFileLocation));
while ((read = uploadedInputStream.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
out.flush();
out.close();
uploadedInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Я пытаюсь создать сервер, который позволяет пользователю загружать zip-файл. Затем сервер записывает zip-файл на диск, распаковывает его, затем удаляет zip-архив, сохраняя при этом разархивированную часть на сервере. Однако, когда я отправляю zip-файл на свой сервер, он не может быть удален. При использовании FileUtils.forceDelete()
пишет, что не может удалить файл. Идеально, когда zip удаляется после распаковки.
РЕДАКТИРОВАТЬ: я могу удалить файл только после того, как post(InputStream zip)
вернется. Если я вызову удаление из метода post
, оно не будет удалено, потому что сообщение не вернулось. Есть ли способ обойти это?