字节流

本文介绍了Java中的字节流,包括输入流和输出流的概念。字节流以字节为单位进行数据的读写,如FileOutputStream用于文件输出,提供write方法用于写出字节。而FileInputStream则用于文件输入,通过read方法读取字节。文章还提及了字节流的常用操作示例,如复制图片。

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

IO

数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input输出output ,即流向内存是输入流,流出内存的输出流。
根据数据的流向分为:输入流输出流

  • 输入流 :把数据从其他设备上读取到内存中的流。
  • 输出流 :把数据从内存 中写出到其他设备上的流。

格局数据的(颗粒大小)类型分为:字节流字符流

  • 字节流 :以字节为单位,读写数据的流。
  • 字符流 :以字符为单位,读写数据的流

字节输出流 OutputStream
java.io.FileOutputStream 类是文件输出流,用于将数据写出到文件。
写出字节write(int b) 方法,每次可以写出一个字节数据,代码使用演示

package demo1;

import java.io.*;

public class FileDemo1 {
    public static void main(String[] args) throws IOException {

        FileOutputStream fileOutputStream = new FileOutputStream("lqq.txt");
        fileOutputStream.write(91);
        fileOutputStream.write(97);
        fileOutputStream.close();

    }}

写出字节数组write(byte[] b),每次可以写出数组中的数据,代码使用演示

public class FileDemo1 {
    public static void main(String[] args) throws IOException {

        FileOutputStream fileOutputStream = new FileOutputStream("lqq.txt");
        byte[] bytes = "陆圈圈".getBytes();
        fileOutputStream.write(bytes);
        fileOutputStream.close();

    }}

写出指定长度字节数组write(byte[] b, int off, int len) ,每次写出从off索引开始,len个字节,代码使用演示

public class FileDemo1 {
    public static void main(String[] args) throws IOException {

        FileOutputStream fileOutputStream = new FileOutputStream("lqq.txt");
        byte[] bytes = "abcd".getBytes();
        // 写出从索引2开始,2个字节。索引2是c,两个字节,也就是cd。
        fileOutputStream.write(bytes,2,2);
        fileOutputStream.close();

    }}

写出换行

public class FileDemo1 {
    public static void main(String[] args) throws IOException {

        FileOutputStream fileOutputStream = new FileOutputStream("lqq.txt");
        byte[] bytes = {97,98,99,100,101};
        // 遍历数组
        for (int i = 0; i < bytes.length; i++) {
            // 写出一个字节
            fileOutputStream.write(bytes[i]);
            // 写出一个换行, 换行符号转成数组写出
            fileOutputStream.write("\r\n".getBytes());
        }
        // 关闭资源
        fileOutputStream.close();

    }}

字节输入流InputStream
java.io.FileInputStream `类是文件输入流,从文件中读取字节。

读取字节read方法,每次可以读取一个字节的数据,提升为int类型,读取到文件末尾,返回-1,代码使用演示

public class FileDemo1 {
    public static void main(String[] args) throws IOException {
        FileInputStream fileInputStream = new FileInputStream("lqq.txt");
       //byte[] bytes = new byte[2];  (定义字节数组,作为装字节数据的容器)
        int len;
        while((b=fileInputStream.read())!=-1){
            System.out.println((char)b);
            // 每次读取后,把数组的有效字节部分,变成字符串打印()
           //System.out.println(new String(bytes,0,b));//  b 每次读取的有效字节个数
        }

    }}

example:复制图片:

public class Copy {
    public static void main(String[] args) throws IOException {
        // 1.创建流对象
        // 1.1 指定数据源
        FileInputStream fis = new FileInputStream("D:\\test.jpg");
        // 1.2 指定目的地
        FileOutputStream fos = new FileOutputStream("test_copy.jpg");

        // 2.读写数据
        // 2.1 定义数组
        byte[] b = new byte[1024];
        // 2.2 定义长度
        int len;
        // 2.3 循环读取
        while ((len = fis.read(b))!=-1) {
            // 2.4 写出数据
            fos.write(b, 0 , len);
        }

        // 3.关闭资源
        fos.close();
        fis.close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值