IO--入力および出力ストリーム

入出力

•入力と出力(I / O)

コンピュータのハードディスク上のデータを、入力と呼ばれるプログラムに読み込みます。つまり、入力して、データを読み込みます。

プログラムから外部デバイスにデータを書き込みます。これは出力、つまり出力と呼ばれ、データ書き込み操作を実行します。

•InputStreamとOutputStreamのサブクラスはバイトストリームです

-バイナリファイルの読み取りと書き込みが可能で、主にオーディオ、画像、曲、バイトストリームを処理し、処理単位は1バイトです。

•リーダーとライターのサブクラスは文字ストリームです

主に文字または文字列を扱い、文字ストリーム処理単位は1文字です。

バイトストリームによって読み取られたバイトデータは、指定されたエンコーディングテーブルに移動して、対応するテキストを取得します。

ここに画像の説明を挿入

public static void main(String[] args) {
    
    
        try {
    
    
            //创建FileInputStream的对象,指定要输入(读)的文件,文件不存在,抛出异常
            FileInputStream in = new FileInputStream("E:\\demo.txt");
            //每次read();一次,从输入流中读到一个字节,当读取完后会返回-1
            int b = in.read();
            System.out.println(b);
            int b1 = in.read();
            System.out.println(b1);
            int b2 = in.read();
            System.out.println(b2);
            int b3 = in.read();
            System.out.println(b3);
            int b4 = in.read();
            System.out.println(b4);
            int b5 = in.read();
            System.out.println(b5);
            int b6 = in.read();
            System.out.println(b6);
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
    }

入力と出力はペアで表示されます

  public static void main(String[] args) {
    
    
        FileInputStream in = null;
        FileOutputStream out = null;
        try {
    
    
            /*
            创建FileInputStream对象,指定要输入(读)的文件,文件不存在,会抛出异常
             */
            in = new FileInputStream("E:\\demo.txt");
            /*
            创建FileOutputStream对象,会自动创建输出的文件
             */
            out = new FileOutputStream("F:\\demo.txt");
            int b = 0;
            while ((b = in.read()) != -1) {
    
    
                System.out.println(b);
                out.write(b);
            }
        } catch (FileNotFoundException e) {
    
    
            e.printStackTrace();
        } catch (IOException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            //关闭流对象,释放系统资源
            try {
    
    
                if (in != null) {
    
    
                    in.close();
                }
                if (out != null) {
    
    
                    out.close();
                }
            } catch (IOException e) {
    
    
                e.printStackTrace();
            }
        }
    }

有効なコード

    public static void main(String[] args) throws IOException {
    
    
            /*
            创建FileInputStream对象,指定要输入(读)的文件,文件不存在,会抛出异常
             */
        FileInputStream in = new FileInputStream("E:\\demo.txt");
            /*
            创建FileOutputStream对象,会自动创建输出的文件
             */
        FileOutputStream out = new FileOutputStream("F:\\demo.txt");
        int b = 0;
        while ((b = in.read()) != -1) {
    
    
            System.out.println(b);
            out.write(b);
        }
        in.close();
        out.close();
    }

読み取りと書き込みの効率の向上

package com.ff.javaio.Day2;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class StreamDemo3 {
    
    
    public static void main(String[] args) throws IOException {
    
    
            /*
            创建FileInputStream对象,指定要输入(读)的文件,文件不存在,会抛出异常
             */
        FileInputStream in = new FileInputStream("E:\\demo.txt");
            /*
            创建FileOutputStream对象,会自动创建输出的文件
             */
        FileOutputStream out = new FileOutputStream("F:\\demo.txt");
        /*
        read();每次从输入流中读取一个字符  返回字符值  读完返回-1
        read(byte[] b)每次从输入流中读取一个byte数组长度个字符,返回数组中实际装入内容个数,读完返回-1
         */
        byte [] b = new byte[10];
        int length=0;
        while((length=in.read(b))!=-1){
    
    
           /* out.write(b);每次传10个字符,不足10个字符,会自动填充空格*/
            out.write(b,0,length);//向外写出一个byte数组个字节,从数组指定位置开始,写length个字节
        }
        in.read(b);
        in.close();
        out.close();
    }
}

バッファリングされたバイトイン/アウトストリーム

public static void main(String[] args) throws IOException {
    
    
        //创建输入节点流,负责对文件读写
        FileInputStream in = new FileInputStream("D:\\Users\\17509\\Desktop\\Tule - Fearless.mp3");
        //创建处理对象,内部有一个缓冲数组,默认为8192个字节,包装输入流,提供缓冲功能,也可以设置缓冲区大小
        BufferedInputStream bin = new BufferedInputStream(in);

        FileOutputStream out = new FileOutputStream("E:/新建文件.mp3");
        BufferedOutputStream bout = new BufferedOutputStream(out);

       /* int b= 0;
        while ((b=bin.read())!=-1){
            bout.write(b);
        }*/
        int length = 0;
        byte[] b = new byte[1024];
        while ((length = bin.read(b)) != -1) {
    
    
            bout.write(b, 0, length);
        }
        bout.flush();//刷新缓冲区
        bout.close();
        bin.close();
    }

おすすめ

転載: blog.csdn.net/XiaoFanMi/article/details/112440159