Amigos,
Java possui uma ou mais classes para compactar arquivos.
É possível compactar um arquivo apenas em memória do computador, sem gravá-lo no disco?
A intenção é compactar um arquivo texto selecionado pelo usuário, mantendo o arquivo compactado na memória do PC, transmitir esse arquivo compactado utilizando socket e depois descartá-lo da memória, sem ter que criar provavelmente uma pasta e um arquivo físico na máquina do usuário.
Opa, você sempre pode armazenar o conteúdo do arquivo (compactado ou não) como um array de bytes.
Dado que as classes de compactação usam InputStream e OutputStream, talvez você possa usar as implementações ByteArrayInputStream e ByteArrayOutputStream pra quebrar este galho pra você em memória.
[quote=kicolobo]Opa, você sempre pode armazenar o conteúdo do arquivo (compactado ou não) como um array de bytes.
Dado que as classes de compactação usam InputStream e OutputStream, talvez você possa usar as implementações ByteArrayInputStream e ByteArrayOutputStream pra quebrar este galho pra você em memória.[/quote]
Valeu pela dica!
Você consegue dar uma pequena demonstração via código?
Isso é má prática. A mensagem de erro é uma das coisas menos informativas de uma exceção (esse tipo de coisa que você fez destrói o stack trace, por exemplo).
Em vez disso, simplesmente não ponha um try/catch (já que você disse que seu método “throws IOException”) ou então faça algo como:
} catch (IOException e) {
throw new IOException(e.getMessage());
}
[/quote]
Isso é má prática. A mensagem de erro é uma das coisas menos informativas de uma exceção (esse tipo de coisa que você fez destrói o stack trace, por exemplo).
Em vez disso, simplesmente não ponha um try/catch (já que você disse que seu método “throws IOException”) ou então faça algo como:
Veja o código do Bezier Curve (ele usou um try/finally para forçar o fechamento dos arquivos. )
Não se esqueça: tudo que abriu, feche. Toalha molhada? Não é para largar em cima da cama e sim no cabide ou no varal.