输入输出字节流

本文介绍了Java中的字节流,包括字节输入流InputStream和字节输出流OutputStream。InputStream作为所有字节输入流的基类,OutputStream则是所有字节输出流的基类。内容详细阐述了它们的使用方法及其在Java虚拟机与文件交互中的角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.字节流输入输出的方向是以Java为标准的。我们可以把文件和Java虚拟机之间想象成有一条通道。数据在通道中可以来回流通,这就有了输入流和输出流。当程序要读取文件的时候,调用程序把文件传入java虚拟机,这是输入流;当程序要向文件内写入数据的时候,数据就会从Java虚拟机中传向文件,这就是输出流。

1.1字节输入流(InputStream)
  InputStreams是Java标准库提供的最基本的输入流,位于java.io包里。它不是一个具体的类或者接口,而是一个抽象类。同时它是所有字节输入流的父类。
  如何使用字节输入流(InputStream)

1.//因为InputStream是抽象类,所以使用时要引用子类的地址
InputStream fis = new FileInputStream("F:\\test1.txt");//括号内为文件路径
//一次只读取一个字节的方法
public static void demo1() throws IOException {
        //1、把外部文件创建为一个输入流对象
        InputStream fis = new FileInputStream("F:\\aa\\test.txt");
        //2、在Java中把输入流的字节读取出来
        int date;
        while ((date=fis.read()) != -1){
            System.out.print((char) date);//转为字符型输出
        }
    }
//一次读取多个字节的方法
public static void demo2() throws IOException {
    InputStream fis = new FileInputStream("F:\\test1.txt");
    byte[] b = new byte[4];//设置中转站,一次可以读4个字节
    int date;
    while ((date=fis.read(b))!= -1){
        System.out.println(new String(b));//字节数组转为字符串输出
        b = new byte[4];//清空中转站
    }
}

//一次全部读完的方法
public static void demo3() throws IOException {
    InputStream fis = new FileInputStream("F:\\test1.txt");
    byte[] b = new byte[fis.available()];//available()方法可以一次获取全部长度
    fis.read(b);//把读的内容存入字节数组b中
    System.out.println(new String(b));//将字节数组转化为字符串
}
//测试代码
public static void main(String[] args) {
    try {
        demo1();//调用的方法
    } catch (IOException e) {
        e.printStackTrace();
    }
}

字节输出流(OutputStream)
  OutputStream是Java标准库提供的最基本的输出流,位于java.io包里。它不是一个具体的类或者接口,而是一个抽象类。同时它是所有字节输入流的父类。
  如何使用字节输出流(OutputStream)

//因为OutputStream是抽象类,所以使用时要引用子类的地址
OutputStream outputStream  =  new FileOutputStream("F:\\aa.txt",true);//默认false,此时写入会覆盖原有的内容。true是追加,不会覆盖原有内容。
public static void dem() throws IOException {
    OutputStream out = new FileOutputStream("F:\\aa.txt",true);
    String ss = "天天向上";
    byte[] bytes = ss.getBytes();//getBytes()方法把字符串转为字节数组
    out.write(bytes);
}
//测试代码
public static void main(String[] args) {
    try {
        dem();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值