流(字节流)

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作
分类:
1. 按照流向分:(以内存为参照点)


字节流 FileInputStream/FileOutputStream
说明:
1. 字节流可以把内容转为字节形式进行传输,1字节为8bit,实质就是二进制可以传输任何类型的数据,所以字节流可以传输任何文件
2.字节流是8位通用字节流(1字节->8二进制)(字节流可以处理任何类型);字符流是16位的unicode字符流(只用于处理字符,处理文本文件)

使用字节流复制文件:

实现把d盘的in.txt上的内容复制到out.txt

tips:

1. 读取缓冲区buf到文件需要注意 不能一下子全部读完,因为文件万一很大,对内存的负担很大
2. 每次输出的是上一次读取字节的长度(len),因为最后一次读取的不为缓冲区大小,会发生覆盖现象.

import java.io.*;
public class filecopy {
    public static void main(String[] args) throws IOException {
        InputStream in =null;
        OutputStream out=null;
        try {
             in = new FileInputStream(new File("d:/in.txt"));
             out = new FileOutputStream(new File("d:/out.txt"));
             //读入到buf缓冲区 然后输出
            byte buf[]=new byte[10]; //每次读取10个字节 防止一下子开辟过大内存
            int len=-1;
            while((len=in.read(buf)) != -1){  //in-->buf
                //输出到out
                out.write(buf,0,len); //每次out的字节范围是0到上一个输入的文件大小
            }

        }catch (Exception e) {
            e.printStackTrace();
        }finally {
             out.close();
             in.close();
        }
    }
}
posted @ 2021-07-15 17:27  nb小歪  阅读(455)  评论(0编辑  收藏  举报