1.Apa itu IO
Operasi I/O di Java terutama mengacu pada penggunaan Java untuk operasi input dan output. Semua mekanisme I/O Java didasarkan pada aliran data untuk input dan output. Aliran I/O Java menyediakan metode standar untuk membaca dan menulis data. Objek apa pun di Java yang mewakili sumber data akan menyediakan metode untuk membaca dan menulis datanya dalam aliran data.
Java.io adalah paket utama untuk sebagian besar kelas input/output yang berorientasi pada aliran data. Selain itu, Java juga menyediakan dukungan untuk transmisi blok, dan blok IO digunakan di perpustakaan inti java.nio.
Kelebihan stream IO adalah sederhana dan mudah digunakan, namun kekurangannya adalah kurang efisien. Blok IO sangat efisien, namun pemrogramannya lebih rumit.
Model Java IO:
Desain model IO Java sangat bagus. Ia menggunakan pola Dekorator untuk membagi Aliran berdasarkan fungsi. Misalnya, jika Anda memerlukan aliran input file yang di-buffer, Anda harus menggunakan kombinasi FileInputStream dan BufferedInputStream.
2. Konsep dasar aliran data
Aliran data merupakan kumpulan data yang kontinyu, seperti halnya aliran air pada pipa air. Air dialirkan sedikit demi sedikit pada salah satu ujung pipa air, dan yang terlihat pada ujung pipa air yang lain adalah aliran yang kontinyu. air. Program penulisan data dapat menulis data ke dalam pipa aliran data segmen demi segmen. Segmen data ini akan membentuk aliran data yang panjang secara berurutan. Untuk program pembacaan data, segmentasi aliran data selama penulisan tidak dapat dilihat. Data dengan panjang berapa pun dapat dibaca setiap kali, tetapi hanya data sebelumnya yang dapat dibaca terlebih dahulu, baru kemudian data berikutnya dapat dibaca. Terlepas dari apakah data ditulis dalam beberapa kumpulan atau ditulis secara keseluruhan sekaligus, efek pembacaannya persis sama.
"Aliran adalah sumber atau tujuan data yang disimpan pada disk atau perangkat periferal lainnya."
Ada tiga cara untuk menyimpan data di komputer, satu dengan penyimpanan eksternal, satu dengan memori, dan yang lainnya dengan cache. Misalnya hard disk, magnetic disk, USB flash drive, dll. di komputer semuanya merupakan penyimpanan eksternal di komputer, dan cache ada di CPU. Penyimpanan eksternal memiliki kapasitas penyimpanan terbesar, diikuti oleh memori, dan terakhir cache. Namun, pembacaan data dari penyimpanan eksternal adalah yang paling lambat, diikuti oleh memori, dan cache adalah yang tercepat. Berikut rangkuman pembacaan data dari memori eksternal ke memori dan penulisan data dari memori ke memori eksternal. Untuk pengertian memori dan penyimpanan eksternal, secara sederhana kita dapat memahaminya sebagai sebuah wadah, yaitu penyimpanan eksternal adalah sebuah wadah, dan memori adalah wadah lainnya. Lalu bagaimana cara membaca data di wadah penyimpanan eksternal ke dalam wadah memori dan bagaimana cara menyimpan data di wadah memori ke penyimpanan eksternal?
Di perpustakaan kelas Java, bagian IO sangat besar karena mencakup berbagai bidang:
Input dan output standar, operasi file, aliran data di jaringan, aliran string, aliran objek, aliran file zip, dll. Di Java, abstraksi input dan output disebut aliran, yaitu seperti pipa air yang menghubungkan dua wadah. Membaca data dari memori eksternal ke memori disebut aliran input, dan menulis data dari memori ke memori eksternal disebut aliran output.
Aliran adalah konsep yang sangat jelas. Ketika program perlu membaca data, program akan membuka aliran ke sumber data ini dapat berupa file, memori, atau koneksi jaringan. Demikian pula, ketika program perlu menulis data, program akan membuka aliran ke tujuan.
Konsep dasar yang dirangkum adalah sebagai berikut:
Urutan byte yang berurutan dengan titik awal dan titik akhir. Termasuk aliran masukan dan aliran keluaran.
2) Aliran Masukan:Program membaca sumber data dari aliran input. Sumber data mencakup dunia luar (keyboard, file, jaringan...), yaitu saluran komunikasi yang membaca sumber data ke dalam program
Tujuan penggunaan aliran data adalah untuk membuat keluaran dan masukan tidak bergantung pada perangkat.
Input Stream tidak peduli dari perangkat mana sumber data itu berasal (keyboard, file, jaringan)
Aliran Output tidak peduli untuk perangkat apa data tersebut ditujukan (keyboard, file, jaringan)
3. I/O Standar
Program Java dapat bertukar informasi singkat dengan dunia luar melalui parameter baris perintah, dan pada saat yang sama juga menetapkan cara bertukar informasi dengan perangkat input dan output standar, seperti keyboard dan monitor. Melalui file, informasi dalam bentuk data apapun dapat dipertukarkan dengan dunia luar.
1. Parameter baris perintahHasil berjalan:
args[0] adalah <Java>
argumen[1] adalah <C>
args[2] adalah <VB>
Aliran data standar yang disertakan dengan sistem java: java.lang.System:
Melihat:
(1) Kelas Sistem tidak dapat membuat objek dan hanya dapat menggunakan tiga anggota statisnya secara langsung.
(2) Setiap kali metode utama dijalankan, ketiga objek di atas secara otomatis dihasilkan.
1) Aliran keluaran standar System.out
System.out mengeluarkan data ke perangkat keluaran standar , dan tipe datanya adalah PrintStream. metode:
2) Aliran input standar System.in
System.in membaca data perangkat input standar (memperoleh data dari input standar, biasanya keyboard), dan tipe datanya adalah InputStream. metode:
3) Aliran kesalahan standar
System.err mengeluarkan kesalahan standar , dan tipe datanya adalah PrintStream. Silakan merujuk ke API untuk instruksi rinci.
Output standar memanggil metode println melalui System.out untuk mengeluarkan parameter dan membungkus baris baru, sedangkan metode print mengeluarkan parameter tetapi tidak membungkus baris baru. Metode println atau print mengimplementasikan beberapa metode keluaran tipe data dasar melalui kelebihan beban, termasuk tipe parameter keluaran boolean, char, int, long, float, dan double. Pada saat yang sama, metode yang tipe parameter keluarannya adalah char[], String, dan Object juga kelebihan beban. Diantaranya, metode print(Object) dan println(Object) akan memanggil metode toString dari parameter Object saat runtime.
kelas publik StandardInputOutput {
public static void main(String args[]) {
string;
//Buat pembaca buffer untuk membaca data baris demi baris dari keyboard
InputStreamReader ir = new InputStreamReader(Sistem.dalam);
BufferedReader di = new BufferedReader(ir);
System.out.println("Sistem Unix: ctrl-d atau ctrl-c untuk keluar"
+ "/nSistem Windows: ctrl-z keluar");
mencoba {
//Baca satu baris data dan keluarkan ke monitor sebagai standar
s = di.readLine();
// Jika kesalahan I/O terjadi saat metode readLine() sedang berjalan, IOException akan dilempar.
sementara (s != nol) {
System.out.println("Baca: " + s);
s = di.readLine();
}
// Tutup pembaca yang di-buffer
melampirkan();
} catch (IOException e) { // Tangkap pengecualian IO apa pun.
e.printStackTrace();
}
}
}
4.java.IO arsitektur hierarki
Hal terpenting dalam keseluruhan paket Java.io adalah 5 kelas dan antarmuka. Lima kelas mengacu pada File, OutputStream, InputStream, Writer, dan Reader; satu antarmuka mengacu pada Serializable. Setelah Anda menguasai operasi inti IO ini, Anda akan memiliki pemahaman awal tentang sistem IO di Java.
Java I/O terutama mencakup level berikut, termasuk tiga bagian:
1. Bagian utama dari bagian streaming IO;
2. Bagian non-streaming terutama mencakup beberapa kelas yang membantu bagian streaming, seperti: kelas File, kelas RandomAccessFile dan kelas FileDescriptor;
3. Kelas lain - kelas yang berhubungan dengan keamanan di bagian pembacaan file, seperti kelas SerializablePermission, dan kelas sistem file yang terkait dengan sistem operasi lokal, seperti kelas FileSystem, kelas Win32FileSystem dan kelas WinNTFileSystem.
Kelas utama adalah sebagai berikut:
1. File (Karakteristik dan Manajemen File): Digunakan untuk informasi deskripsi file atau direktori, seperti membuat direktori baru, mengubah nama file, menghapus file, menentukan jalur file, dll.
2. InputStream (operasi format biner): kelas abstrak, operasi masukan berbasis byte, dan merupakan kelas induk dari semua aliran masukan. Mendefinisikan karakteristik umum yang dimiliki semua aliran masukan.
3. OutputStream (operasi format biner): kelas abstrak. Operasi keluaran berbasis byte. Merupakan kelas induk dari semua aliran keluaran. Mendefinisikan karakteristik umum yang dimiliki semua aliran keluaran.
Karakter di Java mengadopsi standar Unicode. Satu karakter berukuran 16 bit, artinya satu karakter diwakili oleh dua byte. Untuk tujuan ini, aliran untuk memproses karakter diperkenalkan di JAVA.
4. Pembaca (operasi format file): kelas abstrak, operasi input berbasis karakter.
5. Penulis (operasi format file): kelas abstrak, operasi keluaran berbasis karakter.
6. RandomAccessFile (operasi file acak): Memiliki fungsi yang kaya dan dapat melakukan operasi akses (input dan output) dari lokasi mana pun di file .
Arsitektur aliran IO di Java adalah sebagai berikut:
5. Kelas file non-streaming--Kelas file
}
Deskripsi: Metode kelas File:
(1) ada() menguji apakah file atau direktori tertentu ada di disk
(2) mkdir() membuat direktori yang ditentukan oleh objek file (direktori lapisan tunggal)
(3) createNewFile() membuat file yang ditentukan oleh objek file
(4) list() mengembalikan semua string nama file di direktori
6. Perpustakaan kelas aliran Java.IO
Paket java.io berisi semua kelas yang diperlukan untuk streaming I/O. Ada empat kelas dasar dalam paket java.io: kelas InputStream, OutputStream, Reader, dan Writer, yang masing-masing menangani aliran byte dan aliran karakter:
I/O aliran data dasar
masukan/keluaran
aliran byte
aliran karakter
aliran masukan
Aliran masukan
Pembaca
aliran keluaran
Aliran Keluaran
Penulis
Berbagai variasi aliran lain di Jawa berasal darinya:
Versi JDK1.4 mulai memperkenalkan perpustakaan kelas I/O baru, yang terletak di paket java.nio. Perpustakaan kelas I/O baru menggunakan saluran dan buffer untuk meningkatkan efisiensi operasi I/O.
Dalam paket java.io, java.io.InputStream mewakili aliran input byte, dan java.io.OutputStream mewakili aliran output byte, yang berada di tingkat atas paket java.io. Kedua kelas tersebut merupakan kelas abstrak, artinya tidak dapat dibuat instance-nya dan harus disubkelaskan untuk mencapai fungsi tertentu.
1. Klasifikasi khusus aliran io1. Klasifikasi keseluruhan berdasarkan tipe I/O:
1. Memori 1) Membaca dan menulis data dari/ke array memori: CharArrayReader, CharArrayWriter, ByteArrayInputStream, ByteArrayOutputStream
2) Membaca dan menulis data dari/ke string memori StringReader, StringWriter, StringBufferInputStream
2.Pipa pipa mengimplementasikan input dan output pipa (komunikasi antar-proses): PipedReader, PipedWriter, PipedInputStream, PipedOutputStream
3. Aliran file file . Membaca dan menulis file: FileReader, FileWriter, FileInputStream, FileOutputStream
4. Input dan output objek ObjectSerialization : ObjectInputStream, ObjectOutputStream
5. Aliran data DataConversion membaca dan menulis berdasarkan tipe data dasar (data yang diproses adalah tipe dasar Java (seperti Boolean, byte, bilangan bulat, dan angka floating point)): DataInputStream, DataOutputStream
6. Pencetakan mencakup metode pencetakan yang mudah digunakan: PrintWriter, PrintStream
7. Buffering cache data saat membaca atau menulis untuk mengurangi jumlah I/O: BufferedReader, BufferedWriter, BufferedInputStream, BufferedOutputStream
8.Filtering filtering stream , memfilter ketika data dibaca atau ditulis: FilterReader, FilterWriter, FilterInputStream, FilterOutputStream pass
9.Concatenation menggabungkan input dan menghubungkan beberapa aliran input menjadi satu aliran input: SequenceInputStream
10.Menghitung jumlah baris saat membaca data: LineNumberReader, LineNumberInputStream
11.Peeking Ahead melakukan pra-pembacaan melalui mekanisme caching: PushbackReader, PushbackInputStream
12.Konversi antara Byte dan Karakter mengubah aliran byte menjadi aliran karakter sesuai dengan standar pengkodean/dekode tertentu, atau melakukan konversi terbalik (Stream ke Pembaca, kelas konversi Penulis): InputStreamReader, OutputStreamWriter
2. Klasifikasi berdasarkan sumber data (tujuan):
1. Berkas: FileInputStream, FileOutputStream, FileReader, FileWriter
2. byte[]: ByteArrayInputStream, ByteArrayOutputStream
3. Char[]: CharArrayReader, CharArrayWriter
4. String: StringBufferInputStream, StringReader, StringWriter
5. Aliran data jaringan: InputStream, OutputStream, Reader, Writer
7. Aliran byte InputStream/OutputStream
InputStream adalah aliran masukan byte. Ia sendiri merupakan kelas abstrak dan harus bergantung pada subkelasnya untuk mengimplementasikan berbagai fungsi. Aliran yang diwarisi dari InputStream memasukkan data ke dalam program, dan unit datanya adalah byte (8bit);
InputStream adalah kelas yang digunakan untuk memasukkan data byte, sehingga kelas InputStream menyediakan tiga metode baca yang kelebihan beban di kelas Inputstream:
(1) public abstract int read(): Membaca satu byte data, dan nilai yang dikembalikan adalah nilai tipe int dengan bit tinggi diisi dengan 0. Jika nilai yang dikembalikan = -1, berarti tidak ada byte yang dibaca dan pekerjaan pembacaan telah berakhir.
(2) public int read(byte b[ ]): Membaca b.length byte data dan memasukkannya ke dalam array b. Nilai yang dikembalikan adalah jumlah byte yang dibaca. Metode ini sebenarnya diimplementasikan dengan memanggil metode berikutnya (3) public int read(byte b[ ], int off, int len): Membaca hingga len byte data dari aliran input dan menyimpannya pada offset off di dalam b susunan.
(4) public int tersedia(): Mengembalikan jumlah byte yang dapat dibaca dalam aliran input. Catatan: Jika input diblokir, thread saat ini akan ditangguhkan. Jika objek InputStream memanggil metode ini, ia hanya akan mengembalikan 0. Metode ini harus dipanggil oleh objek subkelas yang mewarisi kelas InputStream agar berguna.
(5) lompatan panjang publik (panjang n): Abaikan n byte dalam aliran input, nilai yang dikembalikan adalah jumlah byte yang sebenarnya diabaikan, lewati beberapa byte untuk membaca (6) int publik tutup (): Kami Setelah digunakan, aliran yang kita buka harus ditutup.
Subkategori utama:
1) FileInputStream menggunakan file sebagai InputStream untuk mewujudkan operasi pembacaan file 2) ByteArrayInputStream: menggunakan buffer di memori sebagai InputStream 3) StringBufferInputStream: menggunakan objek String sebagai InputStream
4) PipedInputStream: mengimplementasikan konsep pipa, terutama digunakan di thread 5) SequenceInputStream: menggabungkan beberapa InputStream menjadi satu InputStream
Subkategori utama:
1) ByteArrayOutputStream: Menyimpan informasi dalam buffer di memori
2) FileOutputStream: Menyimpan informasi dalam file
3) PipedOutputStream: mengimplementasikan konsep pipa, terutama digunakan pada thread
4) SequenceOutputStream: Gabungkan beberapa OutStream menjadi satu OutStream
Penentuan akhir aliran: ketika nilai kembalian metode read() adalah -1; ketika nilai kembalian readLine() adalah nol.
3. Aliran masukan file: kelas FileInputStreamFileInputStream dapat menggunakan metode read() untuk membaca satu byte pada satu waktu dan mengembalikannya sebagai tipe int, atau menggunakan metode read() untuk membaca ke dalam array byte susunan byte. Dalam proses membaca atau menulis seluruh file, array byte seperti itu biasanya digunakan sebagai buffer, karena array byte seperti itu biasanya memainkan peran perantara dalam menerima data.
Cara menggunakan (2)
FileInputStream di=newFileInputStream(“d: /abc.txt”);
Contoh program:
Tampilkan isi program InputFromFile.java di monitor
File Tes kelas publik {
public static void main(String args[]) melempar IOException {
mencoba{
FileInputStream rf=FileInputStream baru("InputFromFile.java");
int n=512;penyangga byte[]=byte baru[n];
while((rf.read(buffer,0,n)!=-1)&&(n>0)){
Sistem.keluar.println(String baru(buffer) );
}
Sistem.keluar.println();
rf.close();
} tangkapan(IOException IOe){
Sistem.keluar.println(IOe.toString());
}
}
}
Kelas FileOutputStream digunakan untuk memproses aliran data yang menggunakan file sebagai tujuan keluaran data; string yang mewakili nama file, yang juga dapat berupa objek File atau FileDescriptor.
Ada dua cara untuk membuat objek aliran file:
Cara 1:
File f=File baru ("d:/myjava/write.txt ");
FileOutputStream keluar= FileOutputStream baru (f);
Cara 2:
FileOutputStream keluar=FileOutputStream baru("d:/myjava/write.txt ");
Metode 3: Konstruktor mengambil objek FileDescriptor() sebagai parameternya.
FileDescriptor() fd=FileDescriptor baru();
FileOutputStream f2=FileOutputStream baru(fd);
Metode 4: Konstruktor mengambil nama file sebagai parameter pertama dan nilai Boolean sebagai parameter kedua.
FileOutputStream f=FileOutputStream baru("d:/abc.txt",true);
Catatan: (1) Saat menulis data ke file, jika file sudah ada, file yang ada akan ditimpa; (2) Ketika operasi baca/tulis berakhir, metode tutup harus dipanggil untuk menutup aliran.
}
File Tes kelas publik {
public static void main(String args[]) melempar IOException {
mencoba {
File inFile = File baru("copy.java");
File keluarFile = File baru("copy2.java");
Sirip FileInputStream = FileInputStream baru(inFile);
FileOutputStream foutS = FileOutputStream baru(filekeluar);
ke dalam c;
while ((c = finS.read()) != -1) {
foutS.write(c);
}
sirip.dekat();
foutS.close();
} tangkapan (IOException e) {
System.err.println("Uji FileStreams: " + e);
}
}
}
Akses komputer ke perangkat eksternal memakan waktu. Semakin tinggi frekuensi pengaksesan memori eksternal, semakin besar kemungkinan CPU akan menganggur. Untuk mengurangi jumlah akses ke memori eksternal, lebih banyak data harus dibaca dan ditulis dalam satu akses ke periferal. Untuk tujuan ini, selain mekanisme membaca dan menulis yang diperlukan untuk pertukaran data antara program dan node aliran, mekanisme buffering juga harus ditambahkan. Aliran buffer berarti bahwa setiap aliran data diberi buffer, dan buffer adalah memori yang menyimpan data sementara. Hal ini dapat mengurangi jumlah akses ke hard disk dan meningkatkan efisiensi transmisi.
BufferedInputStream: Saat menulis data ke aliran buffer, data pertama kali ditulis ke buffer. Setelah buffer penuh, sistem segera mengirimkan data ke perangkat output.
BufferedOutputStream: Saat membaca data dari aliran yang di-buffer, sistem terlebih dahulu membaca data dari buffer. Ketika buffer kosong, sistem kemudian membaca data dari perangkat input ke buffer.
Hubungkan BufferedInputStream ke FileInputStream
FileInputStreamin=newFileInputStream( "file1.txt " );
BufferedInputStreambin=newBufferedInputStream(masuk);
2) Tulis memori ke file:
Hubungkan BufferedOutputStream ke FileOutputStream
FileOutputStreamout=newFileOutputStream(“file1.txt”);
BufferedOutputStreambin=newBufferedInputStream(keluar);
kelas publik ReadWriteToFile {
public static void main(String args[]) melempar IOException {
InputStreamReader sin = new InputStreamReader(Sistem.dalam);
BufferedReader bin = BufferedReader baru(dosa);
FileWriter keluar = FileWriter baru("filesaya.txt");
Pertarungan BufferedWriter = BufferedWriter baru (keluar);
string;
while ((s = bin.readLine()).length() > 0) {
pertarungan.write(s, 0, s.length());
}
}
}
8. Aliran Karakter Penulis/Pembaca
Karakter di Java mengadopsi standar Unicode. Satu karakter berukuran 16 bit, artinya satu karakter diwakili oleh dua byte. Untuk tujuan ini, aliran untuk memproses karakter diperkenalkan di JAVA.
Kelas abstrak untuk membaca aliran karakter. Satu-satunya metode yang harus diimplementasikan oleh subkelas adalah read(char[], int, int) dan close(). Namun, sebagian besar subkelas akan mengesampingkan beberapa metode yang didefinisikan di sini untuk memberikan efisiensi yang lebih besar dan/atau fungsionalitas tambahan.
1) FileReader: Sesuai dengan FileInputStream, ini terutama digunakan untuk membaca file karakter, menggunakan pengkodean karakter default, dan memiliki tiga konstruktor:
(1) Gunakan nama file sebagai string: FileReader f=new FileReader(“c:/temp.txt”);
(2) Konstruktor mengambil objek File sebagai parameternya.
Berkas f=berkas baru(“c:/temp.txt”);
FileReader f1=Pembaca File baru(f);
(3) Konstruktor mengambil objek FileDescriptor sebagai parameter
FileDescriptor() fd=FileDescriptor baru()
FileReader f2=Pembaca File baru(fd);
(1) Gunakan array karakter yang ditentukan sebagai parameter: CharArrayReader(char[])
(2) Gunakan array karakter sebagai aliran input: CharArrayReader(char[], int, int)
Untuk membaca sebuah string, konstruktornya adalah sebagai berikut: public StringReader(String s);
2) CharArrayReader: sesuai dengan ByteArrayInputStream
3) StringReader: sesuai dengan StringBufferInputStream
4) Pembaca Aliran Masukan
Membaca byte dari aliran input dan mengubahnya menjadi karakter: Public inputstreamReader(inputstream is);
5) FilterReader: memungkinkan pemfilteran aliran karakter
filter terlindungPembaca(Pembaca r);
6) BufferReader: Menerima objek Reader sebagai parameter dan menambahkan buffer karakter ke dalamnya.
BufferReader Publik(Pembaca r);
Metode utama:
(1) publicintread()throwsIOException;//Membaca karakter, nilai yang dikembalikan adalah karakter yang dibaca
(2) publicintread(charcbuf[])throwsIOException;/*Membaca serangkaian karakter ke dalam array cbuf[], dan nilai yang dikembalikan adalah jumlah karakter yang sebenarnya dibaca*/
(3) publicabstractintread(charcbuf[],intoff,intlen)throwsIOException;
/*Baca karakter len dan simpan mulai dari subskrip array cbuf[]. Nilai yang dikembalikan adalah jumlah karakter sebenarnya yang dibaca.
Kelas abstrak untuk menulis ke aliran karakter. Satu-satunya metode yang harus diimplementasikan oleh subkelas adalah write(char[], int, int), flush() dan close(). Namun, sebagian besar subkelas akan mengesampingkan beberapa metode yang didefinisikan di sini untuk memberikan efisiensi yang lebih besar dan/atau fungsionalitas tambahan. Subkategorinya adalah sebagai berikut:
1) FileWrite: sesuai dengan FileOutputStream dan menulis data tipe karakter ke file, menggunakan pengkodean karakter default dan ukuran buffer.
Penulisan File Publik(file f);
2) chararrayWrite: Sesuai dengan ByteArrayOutputStream, menggunakan buffer karakter sebagai output.
CharArrayWrite();
3) PrintWrite: Menghasilkan keluaran terformat PrintWriter publik(outputstream os);
4) filterWriter: digunakan untuk menulis aliran karakter filter yang dilindungi FilterWriter(Writer w);
5) PipedWriter: sesuai dengan PipedOutputStream
6) StringWriter: Tidak ada aliran berorientasi byte yang sesuai
Metode utama:
(1) publicvoidwrite(intc)throwsIOException; //Tulis 16 bit terbawah dari nilai integer c ke aliran keluaran (2) publicvoidwrite(charcbuf[])throwsIOException; //Tulis array karakter cbuf[] ke aliran keluaran ( 3) publicabstractvoidwrite(charcbuf[],intoff,intlen) throwsIOException; //Menulis karakter len mulai dari indeks di array karakter cbuf[] hingga aliran keluaran (4) publicvoidwrite(Stringstr)throwsIOException; //Menulis karakter dalam string str ditulis ke aliran keluaran (5) publicvoidwrite(Stringstr,intoff,intlen)throwsIOException; //Tulis karakter len mulai dari indeks off dalam string str ke aliran keluaran (6) flush() //Siram aliran keluaran dan keluaran semua kata yang di-cache Festival.
(7)close() menutup aliran publicabstractvoidclose()throwsIOException
3. Perbedaan InputStream dan Reader, perbedaan OutputStream dan Writer
public static void main(String args[]) melempar IOException {
System.out.println("Pengkodean karakter unicode digunakan dalam memori: ");
karakter c='bagus';
intBit rendah=c&0xFF; intBit tinggi=(c&0xFF00)>>8;
System.out.println(""+Bit rendah+" "+Bit tinggi);
String s="Oke";
System.out.println("Pengkodean karakter default sistem operasi lokal:");
readBuff(s.getBytes());
System.out.println("Menggunakan pengkodean karakter GBK:");
readBuff(s.getBytes("GBK"));
System.out.println("Pengkodean karakter UTF-8:");
readBuff(s.getBytes("UTF-8")); }
}
9. Subkelas dari kelas pengecualian IOException
1.EOFException kelas publik:
Jenis pengecualian ini muncul ketika akhir file atau akhir aliran input tercapai secara tidak normal.
2. FileNotFoundException kelas publik:
Pengecualian muncul ketika file tidak dapat ditemukan.
3.kelas publik InterruptedIOException:
Jenis pengecualian ini dilemparkan ketika operasi I/O terganggu.