Java.io menggunakan pola desain seperti mode dekoratif mode adaptor untuk menyelesaikan soket dan masalah input dan output dari aliran karakter.
Aliran byte hanya dapat memproses satu byte pada satu waktu, dan untuk membuatnya lebih mudah untuk mengoperasikan data, aliran soket ditambahkan.
Pendahuluan Masalah:
Mengapa aliran buffered lebih efisien daripada aliran byte file biasa?
Untuk operasi tanpa buffering, satu byte harus ditulis untuk setiap byte dibaca.
Karena operasi IO yang melibatkan disk jauh lebih lambat daripada operasi memori, aliran tanpa buffering sangat tidak efisien.
Aliran dengan buffer dapat membaca banyak byte sekaligus, tetapi tidak menulis ke disk, tetapi hanya ditempatkan di memori terlebih dahulu.
Ketika Anda memiliki ukuran buffer yang cukup, tulislah ke disk sekaligus. Metode ini dapat mengurangi jumlah operasi disk dan kecepatannya akan jauh lebih tinggi!
Ini adalah perbedaan antara keduanya.
Mungkin Proses:
Jika tidak ada area cache, maka setiap kali Anda membaca, operasi IO akan dikirim;
Ada area cache. Saat Anda membaca pertama kali, X byte akan dibaca dan dimasukkan ke dalam area cache. Kemudian bacaan selanjutnya akan dibaca dari cache. Saat Anda membaca di akhir area cache, X byte akan dibaca lagi dan dimasukkan ke dalam area cache.
Jelas bahwa metode kedua akan mengurangi operasi IO dan lebih efisien. Kerugiannya adalah ia mengkonsumsi lebih banyak memori.
Stream input dan output Java dirancang menggunakan enkapsulasi multi-lapisan
InputStream level terendah dan outputStream didasarkan pada aliran byte dan tidak memiliki mekanisme cache. Mereka umumnya dienkapsulasi dan digunakan setelah digunakan oleh bufferInputStream dan bufferoutputStream.
Metode baca dari BufferInputStream memblokir utas. BufferInputStream.read (BUF) akan membaca semua aliran input ke BUF sebelum kembali.
BufferoutputStream.write (buf); akan mengeluarkan konten di buf ke aliran output, tetapi ingat untuk menyiram;
Ada juga printstream dan printwriter yang relatif mudah digunakan yang dapat disegarkan secara otomatis, tetapi untuk aliran byte.
Aliran byte umumnya digunakan untuk mentransfer file biner dan aliran karakter lainnya. Mereka sering dibungkus dengan pembaca.
Yang paling umum digunakan adalah bufferInputStreamReader dan printwrinter. Metode readline dari BufferInputStreamReader sangat praktis dan akan secara otomatis menyiram saat bertemu /r /d.
Printwrinter selama properti penyegaran diatur ke true di konstruktor, metode printlnnya dapat secara otomatis disegarkan tanpa flush.
FilterInputStream dan FilterOutputStream: Aliran filter, aliran buffer dan aliran data keduanya diwarisi dari sini.
Untuk aliran buffer, data akan benar -benar ditransfer ke aliran output hanya ketika buffer penuh, tetapi metode flush () dapat digunakan untuk mengirim data dari buffer yang tidak terisi secara artifisial; Metode pengkodean file tidak dapat ditentukan dan sulit untuk diterapkan pada jaringan.
Yang paling umum digunakan dalam praktiknya adalah bahwa aliran data dapat memungkinkan pengirim dan penerima untuk memproses sesuai dengan pengkodean yang sama.
DataInputStream dan DataOutputStream: Dapat menerima baris data, dapat mengkodekannya, atau bisa berupa aliran soket, dapat soket arsip byte stream dan stream byte jaringan, dan urutan baca dan tulis harus konsisten, jika tidak pengecualian akan terjadi saat membaca.
DataInputStream digunakan untuk menghiasi aliran input lainnya, yang "memungkinkan aplikasi untuk membaca tipe data Java dasar dari aliran input yang mendasari dengan cara yang tidak tergantung pada mesin." Aplikasi dapat menggunakan DataOutputStream untuk menulis data yang dibaca oleh DataInputStream.
Di atas adalah stream stream streaming stream dan data input java.io input dan output stream penyaringan dan aliran data yang diperkenalkan oleh editor. Saya harap ini akan membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas semua orang tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!