Saluran dan penimbal ialah objek teras dalam NIO, dan ia digunakan dalam hampir setiap operasi I/O.
Saluran ialah emulasi strim dalam pakej I/O asal. Semua data ke mana-mana destinasi (atau dari mana-mana) mesti melalui objek Saluran. Penampan pada asasnya ialah objek bekas. Semua objek yang dihantar ke saluran mesti terlebih dahulu diletakkan dalam penimbal, sama seperti mana-mana data yang dibaca dari saluran mesti dibaca ke dalam penimbal.
Apakah penimbal?
Buffer ialah objek yang mengandungi beberapa data untuk ditulis atau dibaca sahaja. Penambahan objek Penampan pada NIO mencerminkan perbezaan penting antara perpustakaan baharu dan I/O asal. Dalam I/O berorientasikan aliran, anda menulis atau membaca data terus ke dalam objek Strim.
Dalam pustaka NIO, semua data dikendalikan menggunakan penimbal. Apabila membaca data, ia dibaca terus ke dalam penimbal. Apabila data ditulis, ia ditulis ke penimbal. Pada bila-bila masa anda mengakses data dalam NIO, anda meletakkannya ke dalam penimbal.
Penimbal pada asasnya ialah tatasusunan. Biasanya ia adalah tatasusunan bait, tetapi tatasusunan jenis lain juga boleh digunakan. Tetapi penimbal adalah lebih daripada sekadar tatasusunan. Penampan menyediakan akses berstruktur kepada data dan juga boleh menjejaki proses baca/tulis sistem.
Jenis Penampan
Jenis penimbal yang paling biasa digunakan ialah ByteBuffer. ByteBuffer boleh melakukan operasi dapatkan/set (iaitu, mendapatkan dan menetapkan bait) pada tatasusunan bait asasnya.
ByteBuffer bukan satu-satunya jenis penimbal dalam NIO. Malah, terdapat jenis penimbal untuk setiap jenis Java asas:
ByteBuffer CharBuffer ShortBuffer IntBuffer LongBuffer FloatBuffer DoubleBuffer
Setiap kelas Penampan ialah contoh antara muka Penampan. Kecuali untuk ByteBuffer, setiap kelas Buffer mempunyai operasi yang sama, tetapi jenis data yang dikendalikannya berbeza. Oleh kerana kebanyakan operasi I/O standard menggunakan ByteBuffer, ia mempunyai semua operasi penimbal yang dikongsi serta beberapa operasi unik.
Kini anda boleh meluangkan sedikit masa untuk menjalankan UseFloatBuffer.java, yang mengandungi contoh penggunaan penimbal yang ditaip.
Apakah itu saluran?
Saluran ialah objek yang melaluinya data boleh dibaca dan ditulis. Membandingkan NIO dengan I/O asal, saluran adalah seperti strim.
Seperti yang dinyatakan sebelum ini, semua data dikendalikan melalui objek Penampan. Anda tidak sekali-kali menulis bait terus ke saluran sebaliknya, anda menulis data ke dalam penimbal yang mengandungi satu atau lebih bait. Sekali lagi, anda tidak membaca bait terus daripada saluran, anda membaca data daripada saluran ke dalam penimbal dan mendapatkan bait ini daripada penimbal.
Jenis Saluran
Perbezaan antara saluran dan strim ialah saluran itu dwiarah. Walaupun strim hanya bergerak dalam satu arah (strim mestilah subkelas InputStream atau OutputStream), saluran boleh digunakan untuk membaca, menulis atau kedua-duanya.
Oleh kerana ia adalah dwiarah, saluran boleh mencerminkan realiti sistem pengendalian asas lebih baik daripada strim. Terutamanya dalam model UNIX, saluran sistem pengendalian asas adalah dua arah.
Atas ialah kandungan terperinci Bagaimanakah saluran dan penimbal Java NIO berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!