1. Aliran input dasar dan aliran output <BR /> aliran adalah salah satu konsep dasar terpenting di Java. Membaca dan menulis file, transmisi dan penerimaan jaringan, komunikasi proses, dan streaming digunakan di hampir semua tempat di mana input dan output diperlukan.
Untuk apa streaming digunakan? Ini untuk input dan output. Mengapa input dan output menggunakan "stream"? Karena unit dasar input dan output program adalah byte, input adalah untuk mendapatkan string byte, dan output adalah untuk mengirim string byte. Namun, dalam banyak kasus, tidak mungkin bagi suatu program untuk menerima semua byte sebelum diproses, tetapi untuk menerima sedikit pemrosesan. Misalnya, ketika Anda mengunduh World of Warcraft, tidak mungkin untuk mengunduh semuanya ke dalam memori dan menyimpannya ke hard disk, tetapi cukup unduh dan simpan sedikit. Saat ini, metode ini sangat cocok.
Di Java, setiap aliran adalah objek. Ada dua jenis aliran: aliran input (inputStream) dan aliran output (outputStream). Untuk aliran input, Anda hanya perlu terus mengambil byte dari aliran;
Bagaimana objek aliran diperoleh? Sistem eksternal yang berbeda juga memiliki cara yang berbeda untuk mendapatkan aliran. Misalnya, saat membaca dan menulis file, Anda perlu membuat objek FileInputStream/FileOutputStream, sementara komunikasi jaringan menggunakan objek soket untuk mendapatkan aliran input dan output. Secara umum, jika suatu kelas memiliki metode seperti getInputStream () atau getoutputStream (), itu berarti input dan output melalui objek aliran.
InputStream adalah aliran input.
Impor Java.io.file; */ kelas publik ReadFileMo {// Entri program statis public void main (string [] args) {string path = "c: /boot.ini"; ; byte [0]; Jika nilai pengembalian -1, itu berarti tidak ada konten untuk dibaca. while (setiap kali! = -1) {// Konten yang dibaca ditempatkan di buffer, dan sekarang menggabungkannya ke dalam konten. konten = concatbyTeArrays (konten, buffer, setiap kali); printStackTrace ();} Akhirnya {coba {isClose (); EM. Kembalikan hasil penggabungan bytes1 dan bytes2*/ private static byte [] concatbytearrays (byte [] bytes1, byte [] bytes2, int sizeofbytes2) {byte [] resu lt = arrays.copyof (bytes1, (bytes1) .length + sizeOfbytes2));
Meskipun sangat bertele -tele, ini memang penggunaan dasar inputstream. Perhatikan bahwa ini hanyalah contoh cara membaca string byte dari aliran input. Bahkan, Java menyediakan cara yang lebih mudah untuk membaca file teks. Itu akan diperkenalkan nanti.
Menggunakan outputstream output adalah hal yang sangat sederhana daripada membaca dari aliran. Inilah contohnya:
Impor Java.IO.OutputStream; SaveFileMo {public static void main (string [] args) melempar ioException {string path = "c: /now.txt"; ()) {System.err.println ("File tidak dapat dibuat."); ) .toString () .getBytes ()); System.out.println ("Penulisan file selesai.");
Java juga menyediakan operasi streaming lainnya, tetapi semuanya memperluas atau membungkus InputStream dan OutputStream. Jadi kedua kelas ini adalah dasar dan harus dipahami.
2. Pembaca dan Penulis
InputStream dan OutputStream diperkenalkan, dan kemudian pembaca dan penulis diperkenalkan. Kedua kelas ini sebenarnya membungkus InputStream dan OutputStream. Namun, mereka memproses bukan byte, tetapi karakter. Jika konten dalam aliran adalah teks, akan lebih mudah untuk diproses dengan pembaca/penulis. Berikut adalah contoh membaca file teks menggunakan pembaca:
Impor Java.io.Fileader; String Path = "C: /BoT.ini"; baca (buffer))! = -1) {content += string baru (buffer, 0, count); );} System.out.println (konten);
Adapun cara menggunakan penulis untuk menulis konten teks ke dalam file, saya tidak akan memberikan contoh di sini.
Contoh di atas masih bukan cara paling umum untuk membaca file teks. Java menyediakan BufferedReader, yang biasanya kami gunakan untuk membaca file teks. Inilah contohnya:
Impor Java.IO.BufferedReader; Path = "C: /BoT.ini"; {Content + = Line "/n"; }
3. Serialisasi Objek <BR /> Serialisasi objek juga merupakan aspek penting dari aplikasi streaming. Serialisasi adalah untuk mengubah objek menjadi serangkaian byte, yang dapat disimpan atau diteruskan ke program Java lain untuk digunakan. ObjectOutputStream dan ObjectInputStream secara khusus digunakan untuk serialisasi dan deserialisasi. Berikut adalah contoh sederhana:
Impor Impor. Impor Java.io.eofexception; /*** Contoh ObjectOutStream /ObjectInputStream. * Kedua kelas ini masing -masing digunakan untuk serialisasi dan deserialisasi. */ SerializationDemo {public static void main (string [] args) melempar Exception {string path = "c: /persons.data"; F.CreateNewFile (); Path); Objek disimpan ke file private static void writePersons (jalur string) yang ditentukan melempar ioException {orang [] orang = orang baru [] {orang baru ("Zhang San", 23), orang baru ("Li Si", 24)} ; /////////// /////////////////////////////////////// ////////////////////////////////////////////////// ///////////////////////////////////// Orang Menerapkan Serializable {Private String Name; orang publik () {} orang publik (nama string, usia int) {this.name = name; name =} public int getage () {return usia; Nama + '/' ' + ", usia =" + usia +'} ';
Contoh ini tidak dapat membaca dan menulis byte dan karakter, karena kedua kelas dikemas. Di atas hanyalah contoh sederhana, dan masih ada banyak hal yang harus diperhatikan jika Anda ingin menulis serialisasi dengan baik. Jika Anda ingin memiliki pemahaman yang lebih dalam tentang serialisasi, Anda dapat memeriksanya di sini. Artikel ini hanya berfokus pada bagian -bagian yang terkait dengan streaming. Faktanya, serialisasi jarang digunakan karena serialisasi mengurangi fleksibilitas, sehingga umumnya tidak digunakan jika Anda tidak menggunakannya.