IO Stream
Di Java, aliran IO dibagi menjadi dua jenis: aliran byte dan aliran karakter. Seperti namanya, aliran byte dibaca dan ditulis sesuai dengan byte, dan karakter diakses sesuai dengan karakter; Pembacaan file yang umum digunakan adalah aliran karakter, dan aliran byte digunakan dalam komunikasi jaringan.
Angka berikut adalah kerangka kerja keseluruhan aliran IO di Java:
Aliran byte
Di Java, aliran byte umumnya berakhir dengan aliran. Aliran byte input disebut inputstream, dan aliran byte output disebut outputstream; InputStream dan OutputStream adalah superclass yang mewakili semua kelas input/output mereka, dan merupakan kelas abstrak (abstrak)
Aliran byte yang biasa digunakan adalah:
1.FileInputStream/FileOutputStream2.BufferedInputStream/BufferedOutputStream3.SequenceInputStream (Urutan Stream) 4.ObjectInputStream/ObjectOutputStream (Input dan Output Stream) 5.PrintStream (Cetak)
Aliran Karakter
Di Java, aliran karakter input berakhir dengan pembaca, dan aliran karakter output berakhir dengan penulis. Misalnya, filereader dan filewriter umum kami adalah aliran karakter, dan pembaca dan penyihir adalah superclass dari aliran karakter input/output, dan juga merupakan kelas abstrak.
Aliran karakter yang umum digunakan adalah:
1.Filereader/FileWriter2.BufferedReader/bufferedWriter3.InputStremReader/OutputStreamWriter (Convert Stream)
Konversi aliran
Aliran konversi adalah kelas yang mengubah aliran byte menjadi aliran karakter, dan ada dua jenis:
・ InputStreamReader ・ OutputStreamWriter
InputStreamReader adalah aliran karakter (pembaca), yang membutuhkan pembungkus aliran byte (inputStream);
OutputStreamWriter adalah aliran karakter (penulis), dan perlu membungkus aliran byte (outputStream)
Menghias
Tujuan pengemasan adalah untuk menambahkan fungsi baru berdasarkan objek asli. Misalnya, pembacaan pembacaan membungkus pembaca, yang sebenarnya merupakan peningkatan fungsi pembaca; Pembaca asli hanya dapat dibaca oleh satu karakter dan satu karakter, dan BufferedReader yang dibentuk setelah pengemasan memiliki fungsi baru: Fungsi langsung membaca baris (readline). Berbicara secara intuitif, ini adalah yang disebut dekorasi.
Dalam hal mode desain, ini adalah mode dekoratif yang khas, dan karakteristiknya adalah:
1. Objek dekoratif dan benda nyata memiliki antarmuka yang sama. Dengan cara ini, objek klien dapat berinteraksi dengan objek dekoratif dengan cara yang sama seperti objek nyata. 2. Objek dekoratif dapat menambahkan beberapa fungsi tambahan sebelum atau setelah meneruskan permintaan ini. Ini memastikan bahwa selama runtime, fungsi tambahan dapat ditambahkan secara eksternal tanpa memodifikasi struktur objek yang diberikan.
Sesuai dengan kami adalah bahwa BufferedReader dan pembaca keduanya adalah pembaca. Setelah kemasan, fungsi bufferedreader ditingkatkan, tetapi masih dapat digunakan sebagai pembaca (referensi kelas induk OO dapat menunjuk ke subkelas)
contoh
Contoh aliran byte
Potong file mp3 menjadi beberapa salinan dan hafal kembali
Paket cn.xdian.test; impor java.io.file; impor java.io.fileInputStream; impor java.io.fileoutputStream; impor java.io.ioException; impor java.ion.squencinputStream; public ova.util.util. throws IOException {cutFile();//Cut MP3 file mergeFlile();//Merge MP3 files}//Merge MP3public static void mergeFlile() throws IOException{File dir = new File("/home/gavinzhou/music_test");//Find all MP3 files in the folder Vector<FileInputStream> vector = new Vektor <FILEInputStream> (); file [] file = dir.listFiles (); untuk (file file: file) {if (file.getName (). endswith (". mp3")) {vector.add (FileInputStream baru (file));} // Dapatkan iterator melalui enumerasi vektor/outpuin (outputReam = vector.elements (); // Buat vektor streamerInInsstream> equenceam = vector.elements ();/create a Sequence StreamInStream; exoilput = vector. FileOutputStream FileOutputStream = FileOutputStream baru ("/home/gavinzhou/conbine.mp3"); // Baca byte file mp3 split [] buf = byte baru [1024]; int length = 0; while ((length = inputStream.read (buf))! =-1) {fileout (length = inputStream.read (buf))! =-1). FileOutputStream.close (); inputStream.close ();} // cut mp3public static void cutfile () melempar ioException {file file = file baru ("/home/gavinzhou/test.mp3"); File = File baru ("/home/gavinzhou/musicstreamxtream"; FileInputStream (file); // Baca file byte [] buf = byte baru [1024*1024]; int length = 0; for (int i = 0; (length = FileInputStream.read (buf))! =-1; i ++) {fileOutputStream.read (BUF))! =-1; i ++) {FileOutputStream File (dir, "bagian"+i+". Mp3")); fileoutputStream.write (buf, 0, length); fileoutputStream.close ();} // tutup stream fileInputStream.close ();}}Contoh aliran karakter
Salin file a untuk file b
Paket cn.xidian.test; impor java.io.bufferedreader; impor java.io.bufferedwriter; impor java.io.file; lowongan java.io.filereader; impor java.io.filewriter; Impor java.io. sourceFile = file baru ("/home/gavinzhou/a.txt"); file desfile = file baru ("/home/gavinzhou/b.txt"); // input streaming streaming bufferedReader input = bufferedReader (filereader baru (sourceFile));/Buat output streamed output output (sourceFered (sourceFile));/Buat output streamed output output output (sourceFered (sourceFile));/Buat output streamed output (fILEWWRITER = BUFFEREDER (SOURCEFILE)); file sumber dan tulis ke file string baru = null; while ((line = input.readline ())! = null) {output.write (line); output.newline ();} // tutup input dan output stream input.close (); output.close ();}}Contoh aliran pencetakan
Paket cn.xidian.test; impor java.io.file; impor java.io.fileoutputStream; import java.io.ioException; import java.io.printstream;/*Cetak aliran dapat mencetak semua jenis data. Before printing the data, the data will be converted into a string and then printed*/class Animal{String name;String color;public Animal(String name,String color){this.name = name;this.color = color;}@Override public String toString() {return "Name:"+this.name+ " Color:"+ this.color;}}public class Demo6 {public static void main(String[] args) melempar ioException {/* file file = file baru ("/home/gavinzhou/a.txt"); // Buat print stream printStream printStream = new printStream (file); // cetak informasi apa pun ke dalam file printStream.println (97); printStream.println (3.14); printStream.println ('a'); printStream.println (true); Hewan a = hewan baru ("tikus", "hitam"); printStream.println (a); // ubah input dan output System.setout (printStream); // Output standar adalah ke screen System.out.println ("Test ...."); */// Pengumpulan informasi log pengecualian. File logfile = file baru ("/home/gavinzhou/test.log"); printStream logprintStream = new printStream (FileOutputStream baru (logfile, true)); coba {int c = 4/0; // exception System.out.println ("c ="+c); int [] arr = null) arror. e) {e.printstacktrace (logPrintStream); // output ke file alih -alih pada layar}}}}Meringkaskan
Di atas adalah semua tentang analisis aliran IO dan contoh kode di Java. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke situs ini:
Eksplorasi Java: Contoh kode yang dienkripsi dan didekripsi file utas+io
Java IO Stream Analisis Kode Pengetahuan Terkait
Interpretasi terperinci dari Java IO Stream
Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!