文字入力ストリームと出力ストリームの基本的な使い方

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() 説明: ストリームを閉じてリソースを解放しますが、ストリームは閉じる前に更新されます。一度閉じると、それ以上データを書き込むことはできません。

                       

おすすめ

転載: blog.csdn.net/weixin_69036336/article/details/128308705