Flie输入输出字节流

什么是io

生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了 trl+s ,可能文件就白白编辑了。当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢 ?键盘、内存、硬盘、外接设备等等。
我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为 输入input 和 输出output,即流向内存是输入流,流出内存的输出流。
Java中I/O操作主要是指使用 java,io 包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。

输入输出字节流

根据数据的流向分为:输入流和输出流

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


格局数据的类型分为:字节流和字符流
字节流 : 以字节为单位,读写数据的流。
字符流 : 以字符为单位,读写数据的流。

顶级父类

OutputStream类


      java.io.OutputStream 抽象类是所有字节输出流的父类,用来写处字节数据流
      成员方法:
          - public void close():关闭此输出流并释放与此流相关联的任何系统资源
          close方法,当完成流的操作时,必须调用此方法,释放系统资源,否则数据写入不完整或消失
          - public abstract void write(int b):将指定的字节写入输出流
          - public void write(byte b[]):将 b.length字节从指定的字节数组写入到此输出流中
          - public void write(byte b[], int off,int len):将指定范围的字节数组的字节数据写到此输出流中

FileOutputStream类


      概述:java.io.FileOutputStream,是OutputStream类的子类,表示字节输出流,用来写出字节数据
      构造方法:
              - public FileOutputStream(String name):创建文件输出流 以指定名称写入文件
              - public FileOutputStream(File file):创建文件输出流,以指定的File对象表示的文件进行写入

输出流

    public static void main(String[] args) throws IOException {
        File f1=new File("d:/来自一个爱你的表白.txt");
        f1.createNewFile();
        OutputStream out=new FileOutputStream(f1);
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入:");
        String msg=sc.next();
        byte[] bytes = msg.getBytes();//获字串对应解析后的 byte 数组out.write(bytes);
        //定义一个String,把字符串的内容写入到电脑的磁盘中
        String mgs="爱你在每一个你不知道的瞬间!";
        byte[] byt = mgs.getBytes(); //获取字符串 解析后的 byte数组
        out.write(byt); //把yte数组写入文件,相当于把字符串写入文件中
    }

输入流

    public static void main(String[] args) throws IOException {
        //输出流:,内存的内容输出到文件(与操作)入流:文件内容输入到内存中(读操作)
        File f1=new File("d:/a.txt");
        //创建一个输入流,读取f1这个文件
        InputStream input=new FileInputStream(f1);
        //读取文件的一个字符,然后把字符转换为对应的数字返回。如果读取到文件的末尾,返回的是-1
        int n;
        while((n=input.read())!=-1){
            System.out.println((char)n);
        }
    }

综合案例:文件的复制

package FilePack;

import java.io.*;

public class FileCopy {
    public static void main(String[] args) throws IOException {
        File f1=new File("D:/a.jpg");
        File newFile=new File("D:/aa/copy.jpg");
        //2.创建目的文件
        newFile.createNewFile();
        //3.定义输入输出流:使用输入流读取内容使用输出流写入内容
        InputStream in=new FileInputStream(f1);
        OutputStream out=new FileOutputStream(newFile);

        /*
        //4.循环读取文件内容,同时写入指定的文件中
        int n;
        while ((n=in.read())!=-1) {
            out.write(n);
        }

        //实际工作中推荐写法
        byte[] buffer=new byte[10];
        int n=0;
        while( (n=in.read(buffer)) != -1){
            out.write(buffer,0,n); //buffer数组从0开始,截取读取到有效字节数n 写入到目的文件中
        }

         */

        //联系时容易理解的方式
        byte[] buffer=new byte[10];
        int n=0;
        while(true) {
            n = in.read(buffer); //读取文件,内容放Abuffer数组中,返回的是实际读取的字节数
            if(n!=-1) {
                out.write(buffer,0,n); //buffer数组从0开始,裁取读取到有效字节数n 写入到目的文件中
            }else {
                break;
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

夜未柒

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

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

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

打赏作者

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

抵扣说明:

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

余额充值