1. 文字入力ストリーム [Reader]
中国語を読み取るためにバイト ストリームを使用すると文字化けが発生するため、文字ストリームが存在します。Java.io.Reader は文字入力ストリームです。これは文字入力ストリームの最上位の親クラスであり、いくつかの共通のメンバー メソッドを定義します。抽象クラスのメンバーメソッドです。
int read() は 1 文字を取得して返します。
int read(char [] cbuf) は一度に複数の文字を読み取り、文字を配列に読み取ります
void close() はリダイレクトを閉じ、それに関連付けられたすべてのリソースを解放します。
java.io.FileReader は、InputStreamReader を拡張します。Reader を拡張します。
FileReader: ファイル文字入力ストリーム
機能:ハードディスク ファイルのデータを文字形式でメモリに読み込みます
施工方法:
FileReader(文字列ファイル名)
FileReader(ファイルファイル)
パラメータ:ファイルを読み取るためのデータ ソース
文字列 fileName: ファイルのパス
ファイル ファイル: ファイル
FileReader 構築メソッドの役割
1. FileReader オブジェクトを作成する
2. FileReader オブジェクトで、読み取るファイルを指定します。
文字入力ストリームを使用する手順:
1. FileReader オブジェクトを作成し、構築メソッドで読み取られるデータ ソースをバインドします。
2. FileReader オブジェクトのリーダー メソッドを使用してファイルを読み取ります。
3. リソースを解放する
基本的な使い方:
コンストラクター public FileReader(File file) ソース ファイル オブジェクトに接続する文字入力ストリーム パイプラインを作成します。
Public FileReader(String pathname) 文字入力ストリーム パイプラインを作成し、ソース ファイル パスに接続します。
/**
* @author 高影 2022/12/14 14:07
* @version 1.0
*/
public class Demo07 {
public static void main(String[] args) throws IOException {
//定义字符输入流,在字节流汉字占三个字节,在字符流汉字占一个字符
FileReader f1 = new FileReader("D:/b.txt");
//每次读取一个字符
int i1 = f1.read();
System.out.println((char)i1);
int i2 = f1.read();
System.out.println((char)i2);
//每次读取缓冲区
char[] chars = new char[3];
int i3 = f1.read(chars);
String s1 = new String(chars,0,i3);//截收数组,从第0个索引开始,截取读收有效字符数长度
System.out.println(s1);
int i4 = f1.read(chars);
String s2 = new String(chars,0,i4);
System.out.println(s2);
//释放资源
f1.close();
}
}
2 番目の文字出力ストリーム [Writer]
java.io.Writer 抽象クラスは、文字ストリームの書き込みに使用されるすべてのクラスのスーパークラスを識別し、指定された文字情報を書き込みます。行き先。これは、バイト出力ストリームの基本的な共通機能メソッドを定義します。
void write(int c): 単一文字を書き込みます
void write(char[] cbuf): 文字配列の書き込み
abstract void write(char[] cbuf,int off,int len): 文字配列の特定の部分、off 配列の開始インデックス、len に書き込まれた文字数を書き込みます。
void write(String str): 文字列を書き込みます
void write(String str,int off,int len): 文字列の特定の部分、off 文字列の開始インデックス、len に書き込まれた文字数を書き込みます。
void flash(): ストリームのバッファをリフレッシュします。
void close(): このストリームを閉じますが、最初にフラッシュします。
/**
* @author 高影 2022/12/14 13:40
* @version 1.0
*/
public class Demo06 {
public static void main(String[] args) throws IOException {
File f1 = new File("D:/b.txt");
if(!f1.exists()){
f1.createNewFile();
}
//定义字符输出流
Writer out = new FileWriter(f1);
out.write(97);
out.write((int)'我');
char[] ch = {'高','级','工','程','师'};
out.write(ch,0,5);
out.write("Java");
out.flush(); //字符流必须刷新缓冲区,才会真正写入磁盘文件中
out.close();
}
}
キャラクタストリーム バイトストリームと比較して、キャラクタストリームはテキストデータの読み取りに適しています。
3. バッファストリーム
バッファリングされたストリームは効率的なストリーム、または高度なストリームとも呼ばれ、以前に学習されたバイト ストリームはオリジナル ストリームと呼ばれることもあります。
機能: バッファ ストリームには独自のバッファがあり、元のバイト ストリームおよび文字ストリームでのデータの読み取りおよび書き込みのパフォーマンスを向上させることができます
バイトバッファリングされたストリームのパフォーマンス最適化の原則
1. バイト バッファリングされた入力ストリームには 8KB のバッファ プールが付属しており、将来的にはバッファ プールから直接データを読み取るため、パフォーマンスが向上します。
2. バイト バッファリングされた出力ストリームには 8KB のバッファ プールが付属しており、データはバッファ プールに直接書き込まれるため、データ書き込みパフォーマンスは非常に高くなります。
バイトバッファストリーム
バイト バッファリングされた入力ストリーム: BufferedInputStream。バイト入力ストリームからのデータ読み取りのパフォーマンスが向上します。
バイト バッファリングされた出力ストリーム: BufferedOutputStream。バイト出力ストリームからのデータ読み取りのパフォーマンスが向上します。
文字バッファストリーム
文字バッファリング入力ストリーム: BufferedReader;
文字バッファ入力ストリームの新しいメソッド
文字バッファ出力ストリーム: BufferedWriter;
文字バッファ出力ストリームの新しいメソッド
/**
* @author 高影 2022/12/14 19:39
* @version 1.0
*/
public class Demo08 {
public static void main(String[] args) throws IOException {
//文件对象
File f1 = new File("D:/a.txt");
//创建Reader对象
Reader r = new FileReader(f1);
//读操作
//BufferedReader缓冲区,传入Reader对象
BufferedReader b = new BufferedReader(r);
//n初始化
int n;
//判断后值是否为-1,如果结果是=1,则没有值
while ((n=b.read()) !=-1){
System.out.println((char)n);
}
}
}
ストリームを更新して閉じる
メソッド: flash() 説明: ストリームを更新し、データの書き込みを続行します。
メソッド: close() 説明: ストリームを閉じてリソースを解放しますが、ストリームは閉じる前に更新されます。一度閉じると、それ以上データを書き込むことはできません。