Konsep dasar aliran IO
Aliran IO digunakan untuk memproses transmisi data antar perangkat
Java mengoperasikan data melalui aliran
Objek yang digunakan oleh Java untuk mengoperasikan aliran dibagi menjadi dua jenis aliran pada paket IO: aliran byte dan aliran karakter: aliran input dan aliran output.
Abstrak Basis Kelas untuk Stream Byte: InputStream, OutputStream
Kelas dasar abstrak untuk aliran karakter: pembaca, penulis
Catatan: Nama subkelas yang berasal dari 4 kelas ini adalah semua sufiks dari nama subkelas dengan nama kelas induknya.
Misalnya: Subkelas InputStream: FileInputStream
Misalnya: Subkelas Filereader Pembaca
Jika Anda membuat objek FileWriter, setelah objek diinisialisasi, file yang akan dioperasikan harus ditentukan dengan jelas, dan file akan dibuat ke direktori yang ditentukan. Jika ada file dengan nama yang sama di direktori, itu akan ditimpa.
Demo:
paket javase.day18; impor java.io.filewriter; impor java.io.ioException; Public Class FileWriterDemo {public static void main (string [] args) {fileWriter fw = null; coba {fw = fileWriter baru ("c: //java_test//filewritertest.txt"); // Panggil metode tulis untuk menulis string ke stream fw.write ("Alex test23"); // Segar data dalam buffer di objek stream fw.flush (); } catch (ioException e) {e.printstacktrace (); } akhirnya {coba {if (fw! = null) {// Tutup sumber daya aliran, tetapi buffer internal akan disegarkan sekali sebelum menutup fw.close (); }}} catch (ioException e) {E.PrintStackTrace (); }}}} paket javase.day18; impor java.io.filewriter; impor java.io.ioException; Public Class FileWriterDemo {public static void main (string [] args) {fileWriter fw = null; coba {fw = fileWriter baru ("c: //java_test//filewritertest.txt"); // Panggil metode tulis untuk menulis string ke stream fw.write ("Alex test23"); // Segar data dalam buffer di objek stream fw.flush (); } catch (ioException e) {e.printstacktrace (); } akhirnya {coba {if (fw! = null) {// Tutup sumber daya aliran, tetapi data dalam buffer internal akan disegarkan sekali sebelum menutup fw.close (); }}} catch (ioException e) {E.PrintStackTrace (); }}}}Cetak kode sumber kode demo file java:
paket javase.day18; impor java.io.filereader; impor java.io.ioException; kelas publik filereaderTest {public static void main (string [] args) {coba {filereader fr = new filereader ("c: //java_test//systemdemo.java"); char [] buf = char baru [1024]; int num = 0; while ((num = fr.read (buf))! =-1) {System.out.println (string baru (buf, 0, num)); }} catch (ioException e) {E.PrintStackTrace (); }}} paket javase.day18; impor java.io.filereader; impor java.io.ioException; kelas publik filereaderTest {public static void main (string [] args) {coba {filereader fr = new filereader ("c: //java_test//systemdemo.java"); char [] buf = char baru [1024]; int num = 0; while ((num = fr.read (buf))! =-1) {System.out.println (string baru (buf, 0, num)); }} catch (ioException e) {E.PrintStackTrace (); }}} Salin kode demo file:
Metode yang digunakan untuk copy_1 () adalah membaca karakter dan menulis karakter.
Metode yang digunakan oleh copy_2 () adalah membaca karakter ke dalam array karakter pada satu waktu dan akhirnya menulisnya ke file target lagi.
paket javase.day18; impor java.io.filereader; impor java.io.filewriter; impor java.io.ioException; Public Class CopyText {public static void main (string [] args) {try {copy_1 (); } catch (ioException e) {e.printstacktrace (); }} public static void copy_1 () melempar ioException {fileWriter fw = FileWriter baru ("c: //java_test//copy_systemdemo.java"); Filereader fr = filereader baru ("c: //java_test//systemdemo.java"); int num = 0; while ((num = fr.read ())! =-1) {fw.write (num); } fw.close (); fr.close (); } public static void copy_2 () melempar ioException {fileWriter fw = fileWriter baru ("c: //java_test//copy_systemdemo.java"); Filereader fr = filereader baru ("c: //java_test//systemdemo.java"); int num = 0; char [] buf = char baru [1024]; while ((num = fr.read (buf))! =-1) {fw.write (buf, 0, num); } fw.close (); fr.close (); }} paket javase.day18; impor java.io.filereader; impor java.io.filewriter; impor java.io.ioException; Public Class CopyText {public static void main (string [] args) {try {copy_1 (); } catch (ioException e) {e.printstacktrace (); }} public static void copy_1 () melempar ioException {fileWriter fw = FileWriter baru ("c: //java_test//copy_systemdemo.java"); Filereader fr = filereader baru ("c: //java_test//systemdemo.java"); int num = 0; while ((num = fr.read ())! =-1) {fw.write (num); } fw.close (); fr.close (); } public static void copy_2 () melempar ioException {fileWriter fw = fileWriter baru ("c: //java_test//copy_systemdemo.java"); Filereader fr = filereader baru ("c: //java_test//systemdemo.java"); int num = 0; char [] buf = char baru [1024]; while ((num = fr.read (buf))! =-1) {fw.write (buf, 0, num); } fw.close (); fr.close (); }} Buffer untuk aliran karakter:
Munculnya buffer meningkatkan efisiensi data baca dan tulis.
Kelas yang sesuai: BufferedWriter, BufferedReader.
Buffer harus dikombinasikan dengan aliran sebelum dapat digunakan.
Fungsi aliran ditingkatkan berdasarkan aliran.
Aturan dasar operasi aliran IO:
1. Hapus sumber dan tujuannya:
Sumber: Stream Input, Pembaca
Tujuan: OutputStream, penulis
2. Apakah data operasi adalah teks biasa:
Ya: Stream Karakter No: Byte Stream adalah: (1) Saat menggunakan pembaca untuk aliran karakter input
(2) Gunakan InputStream untuk aliran byte input
(3) Gunakan penulis untuk aliran karakter output
(4) Saat menggunakan outputStream untuk aliran byte output
3. Saat sistem jelas, lalu klarifikasi objek spesifik mana yang akan digunakan:
Perangkat Sumber: Memori, Hard Disk, Perangkat Tujuan Keyboard: Memori, Hard Disk, Konsol
Kelas Alat Operasi IO
[1] String FileReAdtringHandle (nama file string)
Baca file (ditentukan oleh fileName) ke dalam string;
[2] byte [] filereaderbyteHandle (string fileName)
Baca file (ditentukan oleh nama file) ke dalam array byte;
[3] void FileWriterHandle (nama file string, teks string)
Menulis string (ditentukan oleh teks) ke file (ditentukan oleh fileName).
Ioutil.java
Impor java.io.bufferedInputStream; import java.io.bufferedReader; import java.io.file; import java.io.fileinputStream; memanfaatkan APHA. Filereader+buferedReader (menyediakan metode readline) * * @param filename * @return string */ public static string filereadStringHandle (string fileName) {stringBuilder sb = new stringBuilder (); Coba {bufferedReader di = BufferedReader baru (filereader baru (file baru (nama file) .getAbsoluteFile ())); coba {string s; while ((s = in.readline ())! = null) {sb.append (s); SB.Append ("/n"); }} akhirnya {in.close (); }} catch (ioException e) {lempar runtimeException baru (e); } return sb.toString (); } / ** * Gunakan fileInputStream+bufferedInputStream untuk memproses file dengan cara byte * * @param fileName * @return byte [] * / public static byte [] filereaderByteHandle (string filename) {byte [] data = null; coba {bufferedInputStream bf = baru bufferedInputStream (FileInputStream baru (nama file)); coba {data = byte baru [bf.available ()]; bf.read (data); } akhirnya {bf.close (); }} catch (ioException e) {lempar runtimeException baru (e); } return data == null? byte baru [] {}: data; } / ** * Tulis teks yang ditentukan ke file bernama fileName * * @param fileName * @param Text * / public static void fileWriterHandle (string fileName, string tex coba {out.print (teks); } akhirnya {out.close (); }} catch (ioException e) {lempar runtimeException baru (e); }} public static void main (string [] args) melempar ioException {System.out.print (FileReadStringHandle ("src/ioutil.java")); untuk (byte b: filereaderbyteHandle ("src/ioutil.java")) system.out.print (b); FileWriterHandle ("zj.txt", filereadstringhandle ("src/ioutil.java")); }}