To fazendo um exemplo de download com VRaptor usando o FileDownload, já que meu arquivo se encontra no disco. Após o download notei que não consigo apagá-lo do disco, é como se estivesse em uso.
Olhando os fontes, percebi que o stream do download não é fechado.
Deve funcionar dessa forma mesmo? Se sim, então se eu quiser apagar o arquivo via sistema, eu devo implementar o download usando diretamente o response?
Cara, olhando o fonte do ByteStreams.copy não vi o stream sendo fechado. A versão do Guava que tenho é r07, que já vem como dependência do VRaptor.
Apenas pra conhecimento, o código que vejo é:
public static long copy(InputStream from, OutputStream to) throws IOException {
byte[] buf = new byte[BUF_SIZE];
long total = 0;
while (true) {
int r = from.read(buf);
if (r == -1) {
break;
}
to.write(buf, 0, r);
total += r;
}
return total;
}