I/O流02:字节流

该博客围绕Java中的流展开,介绍了流是对字节序列的抽象,流的输入输出以内存为标准判定。详细讲解了字节流,其处理基本单位为单个字节,用于处理二进制数据。还给出字节输出流、输入流及复制功能的代码演示,如将内容输出到文件、从文件读内容到内存、文件内容复制等。

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

一、什么是流

  • Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列。和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序列的对象被称为输入流;能够向其写入一个字节序列的对象被称为输出流

二、流的输出和输入是以什么为依据的

  • 流的输入的输出都是以内存为标准判定的
  • 输入流:指的是从磁盘或者硬盘等存储设备将信息以流的方式输入到内存
  • 输出流:指的是从内存将信息以流的形式输出到磁盘或者硬盘等存储设备

三、什么是字节流

  • Java中的字节流处理的最基本单位为单个字节,它通常用来处理二进制数据。Java中最基本的两个字节流类是InputStreamOutputStream,它们分别代表了组基本的输入字节流和输出字节流。InputStream类与OutputStream类均为抽象类

四、字节输出流代码演示(将指定内容输出到a.txt文件中)

  • 普通写入
public class 字节输出流 {
    public static void main(String[] args) throws Exception {
        //创建一个字节输出流对象,第二个参数默认为false(覆盖),为true(追加)
        OutputStream outputStream = new FileOutputStream("a.txt");
        //向流中写入数据
        outputStream.write("我是阿常".getBytes());
        //关闭流
        outputStream.close();
    }
}
  • 运行结果
    在这里插入图片描述
  • ASCII写入
public class 字节输出流 {
    public static void main(String[] args) throws Exception {
        //创建一个字节输出流对象,第二个参数默认为false(覆盖),为true(追加)
        OutputStream outputStream = new FileOutputStream("a.txt");
        //整数为ASCII码
        outputStream.write(97);
        //关闭流
        outputStream.close();
    }
}
  • 运行结果
    在这里插入图片描述
  • 指定长度写入
public class 字节输出流 {
    public static void main(String[] args) throws Exception {
        //创建一个字节输出流对象,第二个参数默认为false(覆盖),为true(追加)
        OutputStream outputStream = new FileOutputStream("a.txt");
//        outputStream.write(97);
        outputStream.write("abcdefg".getBytes(),0,3);
        //关闭流
        outputStream.close();
    }
}
  • 运行结果
    在这里插入图片描述
  • 追加写入
public class 字节输出流 {
    public static void main(String[] args) throws Exception {
        //创建一个字节输出流对象,第二个参数默认为false(覆盖),为true(追加)
        OutputStream outputStream = new FileOutputStream("a.txt",true);
        //向流中写入数据
        outputStream.write("我是阿常".getBytes());
        //关闭流
        outputStream.close();
    }
}
  • 运行结果
    在这里插入图片描述

五、字节输入流代码演示

  • 将a.txt中的内容读到内存中
public class 字节输入流 {
    public static void main(String[] args) throws Exception {
        //创建字节输入流对象
        InputStream inputStream = new FileInputStream("a.txt");
        //读取文件内容到内存(-1表示没有内容读取了)
        byte[] bytes = new byte[1024];
        //将内容读取到传入的字节数组中
        int len=0;
        while ((len=inputStream.read(bytes))!=-1){
            System.out.println("读到内存中的内容为--->"+new String(bytes,0,len));
        }
        inputStream.close();
    }
}
  • 运行结果
    在这里插入图片描述

六、字节流复制功能代码演示

  • 将a.txt中的内容复制到b.txt中
//字节流复制文件
public class 文件复制 {
    public static void main(String[] args) throws Exception {
        //计算复制开始时间
        long t1 = System.currentTimeMillis();
        //1、创建一个字节输入流读取文件信息
        InputStream in = new FileInputStream("a.txt");
        //2、创建一个字节输出流将内存中的信息写到指定文件中
        FileOutputStream out = new FileOutputStream("b.txt");
        byte[] bytes = new byte[1024];
        int len;
        while ((len=in.read(bytes))!=-1){
            out.write(bytes,0,len);
        }
        out.close();
        in.close();
        //计算文件复制结束时间
        long t2 = System.currentTimeMillis();
        System.out.println("文件复制时间为:"+(t2-t1)/1000+"秒");
    }
}
  • 运行结果
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微笑AJJD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值