FileInputSteam

字符流:处理字符相关,如处理⽂本数据(如txt⽂件), Reader/Writer
字节流: 处理字节相关,如声⾳或者图⽚等⼆进制,InputStream/OutputStream
区别:
1.字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,⼀次可能读多个字节
2.字节流可以处理⼏乎所有⽂件,字符流只能处理字符类型的数据
形成的四个抽象类
字符流 Reader/Writer
字节流 InputStream/OutputStream
在这里插入图片描述
InputStream是输⼊字节流的⽗类,它是⼀个抽象类(⼀般⽤他的⼦类)

1.int read() 
讲解:从输⼊流中读取单个字节,返回0255范围内的int字节值,字节数据可直接转换为int类 型, 如果已经到达流末尾⽽没有可⽤的字节,则返回-1
2.int read(byte[] buf)
讲解:从输⼊流中读取⼀定数量的字节,并将其存储在缓冲区数组buf中, 返回实际读取的字节数,如果已经到达流末尾⽽没有可⽤的字节,则返回-1
3.long skip(long n)
讲解:从输⼊流中跳过并丢弃 n 个字节的数据。
4.int available()
讲解:返回这个流中有多少个字节数,可以把buf数组⻓度定为这个
5.void close() throws IOException
讲解:关闭输⼊流并释放与该流关联的系统资源

常⻅⼦类FileInputStream
抽象类InputStream⽤来具体实现类的创建对象, ⽂件字节输⼊流, 对⽂件数据以字节的形式进⾏读取操作
该流用于从文件读取数据
1.常⽤构造函数

//1.可以使用字符串类型的文件名来创建一个输入流对象来读取文件:
InputStream f = new FileInputStream("C:/java/hello");
//2.使用一个文件对象来创建一个输入流对象来读取文件。
//我们首先得使用 File() 方法来创建一个文件对象:
File f = new File("C:/java/hello");
InputStream in = new FileInputStream(f);

在这里插入图片描述
练习

package IO;

import java.io.*;

public class Main {
    public static void test() throws IOException {
        File file = new File("D:\\javaSE"+"\\a.txt");
        InputStream inputStream = new FileInputStream(file);


    }
    public static void read(InputStream inputStream) throws IOException {
        int a = inputStream.read();
        System.out.println(a);//读取单个字符,返回int
    }
    public static void readMore(InputStream inputStream) throws IOException {
        byte []bytes = new byte[1024];
        int b = inputStream.read();
        System.out.println(b);
    }
    public static void skip(InputStream inputStream) throws IOException {

        long b = inputStream.skip(5);
        System.out.println(inputStream.read()+"字符为 "+(char)inputStream.read());
    }
    public static void zijie(InputStream inputStream) throws IOException {
        int length = inputStream.available();
        System.out.println("字节数量为: "+length);
        byte []bytes = new byte[length];
        int length1 = inputStream.read(bytes);
        System.out.println(new String(bytes,0,length1));
        //最后记得关闭流
       inputStream.close();
        
    }
    public static void main(String []args) throws IOException {
        File file = new File("D:\\javaSE"+"\\a.txt");
        InputStream inputStream = new FileInputStream(file);
//        readMore(inputStream);
//        skip(inputStream);
        zijie(inputStream);
    }
}
//String(byte[] bytes,int offset,int length);通过byte数组,从offset开始,总共length长的字节构造字符串对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值