Java - Flux d'entrée et de sortie tamponnés (BufferedInputStream, BufferedOutputStream)

    Tampon Tampon C'est une partie de l'espace mémoire. Un certain espace de stockage est réservé dans l'espace mémoire. Ces espaces de stockage sont utilisés pour mettre en mémoire tampon les données d'entrée ou de sortie. Cette partie de l'espace est appelée un tampon, et le tampon a un certain taille.


    Il existe un déséquilibre entre la vitesse de transmission des données et la vitesse de traitement des données. Par exemple, 50 écritures sur le disque dur par seconde ont un impact important sur le système, et beaucoup de temps est perdu à traiter les deux événements de début d'écriture et terminer l'écriture et les stocker temporairement dans le tampon, cela devient une écriture sur le disque dur toutes les 5 secondes, les données peuvent être envoyées directement au tampon, les appareils à grande vitesse n'ont pas à attendre les appareils à faible vitesse, l'impact sur le Le système est petit et l'efficacité d'écriture est élevée.


    Ce qui suit présente l'utilisation des deux flux avancés BufferedInputStream et BufferedOutputStream en lecture et en écriture, en prenant comme exemple la copie de fichiers.



insérez la description de l'image ici



FileInputStream fis = nouveau FileInputStream (répertoire de fichiers)


// Encapsule fis dans l'objet BufferedInputStream
BufferedInputStream bis = new BufferedInputStream(fis);



FileOutputStream fos = new FileOutputStream (répertoire de fichiers);


// Encapsule fos dans l'objet BufferedOutputStream
BufferedOutputStream bos = new BufferedOutputStream(fos);


    Parmi eux, bos.flush() peut en fait ignorer ce flux de tampon de vidage. Appelez simplement bis.close() et bos.close().



    Visible à travers le code sous-jacent de BufferedInputStream, Inputstream a été fermé



insérez la description de l'image ici



    Ensuite, via le code sous-jacent de BufferedOutputStream, bien qu'il n'y ait pas de méthode close(), selon la nouvelle fonctionnalité de JDK7 try (déclarée ici sera automatiquement fermée), donc OutputStream est également automatiquement fermé, puis appelez la méthode flush() pour exécuter.



insérez la description de l'image ici



    Le code de base est le suivant :



public class Buffer_IO_Stream {
    
    

    public static void main(String[] args){
    
    
        try {
    
    
            FileInputStream fis = new FileInputStream("C:\\Users\\Administrator\\Desktop\\test\\1230.txt");
            BufferedInputStream bis  = new BufferedInputStream(fis);

            FileOutputStream fos  = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\test\\copy.txt");
            BufferedOutputStream bos = new BufferedOutputStream(fos);

            int size;
            byte[] buf  = new byte[1024];
            while ((size=bis.read(buf))!=-1){
    
    
                bos.write(buf,0,size);
            }

            // bos.flush();
            bis.close();
            bos.close();
        }
        catch(Exception e){
    
    
        }
    }
}


Je suppose que tu aimes

Origine blog.csdn.net/weixin_48591974/article/details/128121327
conseillé
Classement