Java Language Racchiudere flussi di input / output

Esempio

OutputStream e InputStream hanno molte classi diverse, ognuna con una funzionalità unica. Con il wrapping di un flusso attorno ad un altro, si ottiene la funzionalità di entrambi i flussi.

Puoi avvolgere un flusso qualsiasi numero di volte, prendi nota dell'ordine.

Combinazioni utili

Scrivere caratteri su un file mentre si utilizza un buffer

File myFile = new File("targetFile.txt");
PrintWriter writer = new PrintWriter(new BufferedOutputStream(new FileOutputStream(myFile)));

Comprimere e crittografare i dati prima di scrivere su un file mentre si utilizza un buffer

Cipher cipher = ... // Initialize cipher
File myFile = new File("targetFile.enc");
BufferedOutputStream outputStream = new BufferedOutputStream(new DeflaterOutputStream(new CipherOutputStream(new FileOutputStream(myFile), cipher)));

Elenco di wrapper di flusso input / output

involucro Descrizione
BufferedOutputStream / BufferedInputStream Mentre OutputStream scrive i dati un byte alla volta, BufferedOutputStream scrive i dati in blocchi. Questo riduce il numero di chiamate di sistema, migliorando così le prestazioni.
DeflaterOutputStream / DeflaterInputStream Esegue la compressione dei dati.
InflaterOutputStream / InflaterInputStream Esegue la decompressione dei dati.
CipherOutputStream / CipherInputStream Crittografa / decrittografa i dati.
DigestOutputStream / DigestInputStream Genera Message Digest per verificare l'integrità dei dati.
CheckedOutputStream / CheckedInputStream Genera un Somma di controllo. CheckSum è una versione più banale di Message Digest.
DataOutputStream / DataInputStream Consente la scrittura di tipi di dati e stringhe primitivi. Significa per scrivere byte. Piattaforma indipendente.
PrintStream Consente la scrittura di tipi di dati e stringhe primitivi. Significa per scrivere byte. Piattaforma dipendente
OutputStreamWriter Converte un OutputStream in un writer. Un OutputStream tratta i byte mentre i writer si occupano di caratteri
PrintWriter Chiama automaticamente OutputStreamWriter. Consente la scrittura di tipi di dati e stringhe primitivi. Rigorosamente per scrivere caratteri e meglio per scrivere personaggi