1. Tentang inputStream.read ()
Saat membaca data dari aliran data, grafiknya sederhana dan metode inputStream.read () sering digunakan. Metode ini hanya membaca satu byte dari aliran pada satu waktu, yang akan sangat tidak efisien. Cara yang lebih baik adalah dengan menggunakan inputStream.read (byte [] b) atau inputStream.read (byte [] b, int, int len) metode untuk membaca beberapa byte sekaligus.
2. Tentang metode yang tersedia () dari kelas inputstream
Saat membaca beberapa byte sekaligus, metode inputStream.Available () sering digunakan. Perlu dicatat bahwa jika metode ini digunakan untuk membaca data dari file lokal, umumnya tidak akan mengalami masalah, tetapi jika digunakan untuk operasi jaringan, ia akan sering menghadapi beberapa masalah. Misalnya, ketika Socket berkomunikasi, pihak lain dengan jelas mengirim 1.000 byte, tetapi programnya menyebut metode yang tersedia () hanya mendapat 900, atau 100, atau bahkan 0. Rasanya agak tidak dapat dijelaskan dan tidak dapat menemukan alasannya. Bahkan, ini karena komunikasi jaringan sering terputus -putus, dan serangkaian byte sering dikirim dalam beberapa batch. Program lokal menyebut metode yang tersedia () terkadang mendapat 0. Ini mungkin karena pihak lain belum merespons, atau mungkin karena pihak lain telah merespons, tetapi data belum dikirim ke daerah setempat. Pihak lain mengirim 1.000 byte kepada Anda, dan mungkin tiba dalam 3 batch.
Jika Anda menulis kode seperti ini:
int count = in.available ();
Sering ada kesalahan saat melakukan operasi jaringan karena ketika Anda memanggil metode yang tersedia (), data yang dikirim ke Kirim mungkin belum tiba, dan jumlah yang Anda dapatkan adalah 0.
Perlu mengubahnya seperti ini:
Int count = 0;
3. Tentang inputStream.read (byte [] b) dan inputStream.read (byte [] b, int off, int len)
Kedua metode digunakan untuk membaca beberapa byte dari aliran. Sebagai contoh, dalam metode pertama, pemrogram sering berharap bahwa program dapat membaca byte b.length, tetapi situasi sebenarnya adalah bahwa sistem sering tidak dapat membaca begitu banyak. Setelah dengan cermat membaca instruksi Java API, Anda akan menemukan bahwa metode ini tidak menjamin bahwa ia dapat membaca begitu banyak byte, ia hanya dapat menjamin bahwa ia dapat membaca begitu banyak byte (setidaknya 1). Oleh karena itu, jika Anda ingin program membaca byte hitungan, yang terbaik adalah menggunakan kode berikut:
byte [] b = byte baru [Count]; int readCount = 0; ;}
Kode ini dapat memastikan bahwa penghitungan byte dibaca kecuali pengecualian IO ditemui di tengah atau akhir aliran data (eofexception)
4. Contoh Membaca File PowerPoint
Impor Java.io.inputstream; hslf .model.slide; SlideShow ss = Slideshow baru (hslfslideshow baru (IS)); // IS adalah inputstream file, buat slide slide [] slide = ss.getslides (); // Dapatkan setiap slide untuk (int i = 0; i < slide.length; i ++) {textrun [] t = slide [i] .gettextruns (); // Untuk mendapatkan konten teks slide, buat Textrun untuk (int j = 0; j <t.length; j ++ ) {Content .Append (t [j] .getText ()); // Di sini konten teks akan ditambahkan ke konten} Content.append (slide [i] .gettitle ()); Judul, Konten .ToString ());