Lendo um pouco da documentação do Vraptor na parte de upload e download(http://www.vraptor.org/pt/docs/download-e-upload/), me apareceu uma dúvida, segue um exemplo do upload:
public void atualizaFoto(Perfil perfil, UploadedFile foto) {
File fotoSalva = new File("/path/to/file/repository", foto.getFileName());
foto.writeTo(fotoSalva);
dao.atribui(fotoSalva, perfil);
}
e o exemplo dois exemplos do download:
public Download foto(Perfil perfil) {
byte[] conteudoFoto = [...];
String contentType = "image/jpg";
return new ByteArrayDownload(conteudoFoto, contentType, filename);
}
public Download foto(Perfil perfil) {
InputStream stream = [...];
String contentType = "image/jpg";
return new InputStreamDownload(stream, contentType, filename);
}
Nos downloads trabalhamos com fluxos de bytes, mas em nenhum local estamos fechando esses fluxos após o uso, a mesma coisa acontece com o upload, em nenhum momento estamos fechando o uploadedfile. Não precisamos fechar estes recursos ou o ByteArrayDownload e o InputStreamDownload já possuem algum recurso de fechamento automático? o UploadedFile também precisa ser fechado?