(バイトストリームと文字ストリーム)InputStreamバイト入力ストリーム

OutputStreamクラスに対応するのはZijie入力ストリームであり、InputStreamは主にバイト配列の読み取りを実装します。

public abstract class InputStream extends Object implements Closeable

次のコアメソッドがOutputStreamで定義されています。

  • 1バイトのデータを読み取ります。publicabstractintread()はIOExceptionをスローします(特定のバイトデータを返します。最後まで読み取られている場合は、-1を返します)
  • バイトデータのセットを読み取ります:public intread(byte [] b)throws IOExceptionが最も一般的に使用されます(バイト配列のセットを読み取り、読み取り数を返し、データが最後まで読み取られていない場合は、return- 1)
  • バイトデータのセットの一部を読み取る(off-len):public int read(byte [] b、int off、int len)throws IOException

IputStreamクラスは抽象クラスに属しています。現時点では、オブジェクトをインスタンス化するためにそのサブクラスに依存する必要があります。ファイルから読み取る場合は、FileInputStreamサブクラスを使用する必要があります。サブクラスの場合は、インスタンス化のみを考慮します。親クラスオブジェクトの。構築メソッド:publicFileInputStream(ファイルファイル)はFileNotFoundExceptionをスローします

例:データの読み取り

package 字节流与字符流;

import java.io.*;

public class InputStream字节输入流 {
    public static void main(String[] args) throws IOException {
        File file = new File("F:"+File.separator+"Test"+File.separator+"test.txt");
        InputStream input = new FileInputStream(file);
        byte[] data = new byte[1024];   //开辟一个缓冲区读取数据
       int length = input.read(data);   //读取数据,数据保存在字节数组之中,返回读取个数
        System.out.println(new String(data,0,length));  //从0开始到字节数组长度转换成字符串
        input.close();
    }
}

www.baidu.comwww.baidu.comwww.baidu.comwww.baidu.comwww.baidu.comwww.baidu.com

この時点で、ファイルの内容が読み取られています

入力ストリームで最も厄介な問題は、read()メソッドを使用する場合、バイト配列としてしか受信できないことです。

JDK1.9以降、新しいメソッドがInputStreamクラスに追加されました。

すべてのバイトを読み取る:public byte [] readAllBytes()throws IOException

package 字节流与字符流;

import java.io.*;

public class InputStream字节输入流 {
    public static void main(String[] args) throws IOException {
        File file = new File("F:"+File.separator+"Test"+File.separator+"test.txt");
        InputStream input = new FileInputStream(file);
        byte[] data = input.readAllBytes();   //读取数据,数据保存在字节数组之中,返回读取个数
        System.out.println(new String(data));  //从0开始到字节数组长度转换成字符串
        input.close();
    }
}

読み取るコンテンツが非常に大きい場合、そのような読み取りはプログラムを直接クラッシュさせます。

おすすめ

転載: blog.csdn.net/weixin_46245201/article/details/112770388