Ioストリーム(文字ストリーム)の使用法とこれまでの理解の組み合わせは非常に簡単です

えっ?たった今起こったこと

さて、キャラクターストリームを見てみましょう

ところで、以前の知識を得るために小さなケースを行う前に、文字ストリームについて話しましょう

演習:ファイルのコピー

public class Fdemo {
    
    
    //复制文件
    public static void main(String[] args) {
    
    
        //字节输入
        FileInputStream fi = null;
        //字节输出
        FileOutputStream fo =null;
        String path="D:\\jj\\a2.txt";
        try {
    
    
            fi = new FileInputStream(path);
            fo =new FileOutputStream("D:\\jj\\FuZhi.txt");
            //遍历
            int b;
            while ((b=fi.read())!=-1){
    
    
                fo.write(b);
              }
        } catch (FileNotFoundException e) {
    
    
            e.printStackTrace();
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }

        //释放资源
        try {
    
    
            fi.close();
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
        try {
    
    
            fo.close();
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
    }
}

1.1 FileWriter:ファイル文字出力ストリーム:

役割:メモリ内の文字データをファイルに書き込む

工法:

FileWriter(File file) FileオブジェクトのFileWriterオブジェクトを構築します。

FileWriter(String fileName) 指定されたファイル名でFileWriterオブジェクトを構築します。

ファイル文字出力ストリームのステップを使用(強調):

1. FileWriterオブジェクトを作成し、コンストラクターで書き込むデータの宛先をバインドします

2. FileWriterでメソッドwriteを使用して、メモリバッファーにデータを書き込みます(文字をバイトに変換するプロセス)。

3. FileWriterのメソッドがフラッシュされ、メモリバッファー内のデータがファイルにフラッシュされます

4.リリースリソース

/*
* 字符输出流【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 flush()   刷新该流的缓冲。
    void close()   关闭此流,但要先刷新它。
* */
public class Fdemo07 {
    
    
    //写出字符
    public static void main(String[] args) throws IOException {
    
    
        FileWriter fileWriter = null;
        try {
    
    
            fileWriter=new FileWriter("D:\\jj\\b.txt");
            fileWriter.write(93);
            fileWriter.write("我喜欢");
            fileWriter.write("雷姆");
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
        /*
        【注意】关闭资源时,与FileOutputStream不同。
        如果不关闭,数据只是保存到缓冲区,并未保存到文件。
        */
        fileWriter.close();
    }
}

文字出力ストリームにデータを書き込む他の方法

public class Fdemo08 {
    
    
    //写出字符数组
    public static void main(String[] args) {
    
    
        FileWriter fileWriter = null;
        try {
    
    
            fileWriter=new FileWriter("D:\\jj\\b.txt");
            char[] chars = "都拉都拉都拉都拉都拉都拉".toCharArray();
            fileWriter.write(chars);          //都拉都拉都拉都拉都拉都拉
            fileWriter.write("奥里给");        //直接写字符串
            fileWriter.write(chars,0,2);      //写字符数组的一部分
            fileWriter.write("奥里给",0,2);    //写字符数组的一部分
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
        try {
    
    
            fileWriter.close();
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
    }
}

1.2ファイル文字入力ストリーム

文字入力ストリームリーダー:文字入力ストリームの最上位の親クラスであり、いくつかの一般的なメンバーメソッドを定義し、抽象クラスです。

メンバーの方法:

int read()単一の文字を読み取り、戻ります

int read(char[] cbuf)複数の文字を読み込んだら、文字を配列に読み込みます

void close()ストリームを閉じて、関連するすべてのリソースを解放します

FileReader:ファイル文字入力ストリーム

機能:ハードディスクファイルのデータを文字の形式でメモリに読み込みます

工法:

FileReader(File file)ファイルの読み取りを指定して、新しいFileReaderを作成します。

FileReader(String fileName)新しいFileReaderを作成し、読み取られるファイルの名前を指定します。

パラメータ:ファイルを読み取るためのデータソース

String fileName:ファイルパス

ファイルファイル:ファイル

文字入力ストリームを使用する手順:

1. FileReaderオブジェクトを作成し、データソースをバインドします

2. FileReaderオブジェクトでreadメソッドを使用して、ファイルを読み取ります

3.リソースを解放する

王様を揚げましょう

int read()は、単一のファイルを読み取って返します。

public class Fdemo09 {
    
    
    //写出字符数组
    public static void main(String[] args) {
    
    
        FileReader fileReader = null;
        try {
    
    
            fileReader=new FileReader("D:\\jj\\b.txt");
         
           int b=0;
            while ((b=fileReader.read())!=-1){
    
    
                System.out.println((char)b);
            }
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }

        try {
    
    
            fileReader.close();
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
    }

}

int read(char [] cbuf)一度に複数のファイルを読み取り、文字を配列に読み取ります

public class Fdemo09 {
    
    
    //写出字符数组
    public static void main(String[] args) {
    
    
        FileReader fileReader = null;
        try {
    
    
            fileReader=new FileReader("D:\\jj\\b.txt");
            char[] chars = new char[1024];
            int b=0;  //每次读取的有效个数
            while ((b=fileReader.read(chars))!=-1){
    
    
                /*
                    String类的构造方法
                     String(char[] value)把字符数组转换为字符串
                     String(char[] value, int offset , int count)把字符数组的一部分转换为字符串, offset数组的开始索引  count转换的个数
                    
                */
                System.out.println(new String(chars,0,b));
            }
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }

        try {
    
    
            fileReader.close();
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
    }

}

おすすめ

転載: blog.csdn.net/agood_man/article/details/108299241