IO基础(字节流)

IO基础

什么是IO?

**流:**在 Java中所有数据都是使用流读写的。流是一组有顺序的,有起点和终点的字节集合,是对数据传 输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象 为各种类,方便更直观的进行数据操作。

I0流是有起点与终止的有序的字节序列
程序与外部进行数据交换可以使用I0流,主要是读写文件相关的流类.这些流类在java.io包中,可以分为:

**输入/输出流:**是以当前程序为中心,程序从外面读数据是输入流,程序把数据保存到外面是输出流。

字节流/字符流:如果是以字节为单位处理流中的数据就是字节流,如果是以字符为单位处理流中的数据就是字符流。
**节点流与处理流:**如果直接操作数据源就是节点流;处理流不直接操作数据源,是对其他流的包装。

在java.io包中字节流都是以Stream单词结尾,字符流以Reader/Writer结尾

字节流常用类的继承关系

在这里插入图片描述

字节输入输出流( FileInputStream 和 FileOutputStream)

FileInputStream 从文件系统中的某个文件中获得输入字节。
FileOutputStream 用于读取诸如图像数据之类的原始字节流。

代码如下:
读aaa.txt的文件内容写入abc.txt文件中


import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Test {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("C:\\my_java\\aaa.txt");
        FileOutputStream fos = new FileOutputStream("C:\\my_java\\abc.txt");
        int len = 0;
        byte[] buff = new byte[1024];
        while ((len = fis.read(buff)) != -1) {
            fos.write(buff, 0, len);
        }
        fis.close();
        fos.close();
    }
}

字节缓冲流 BufferedInputStream

在这里插入图片描述
程序不直接从文件中读取数据而是从BufferedInputstream的缓冲区中读取数据
程序是数据写到BufferedOutputStream的缓冲区中,该缓冲区中的数据在满足以下条件时才会写到文件中
缓冲区满
调用flush()清空缓冲区
调用close() 关闭缓冲流流

BufferedInputStream 和 BufferedOutputStream 实现文件拷贝代码如下:
将aaa.txt文件拷贝到src下


import java.io.*;

public class TestBufferStreamCopy {
    public static void main(String[] args) throws IOException {
        File file = new File("aaa.txt");
        if (!file.isFile()) {
            return;
        }
        BufferedInputStream bfis = new BufferedInputStream(new FileInputStream(file));
        BufferedOutputStream bfos = new BufferedOutputStream(new FileOutputStream("src\\" + file.getName()));//copy到src目录下      
        byte bytes[] = new byte[1024];
        int temp = 0;
        //边读边写      
        while ((temp = bfis.read(bytes)) != -1) {//读          
            bfos.write(bytes, 0, temp);  //写      

        }
        bfos.flush();
        bfos.close();
        bfis.close();
        System.out.println("copy成功!");
    }
}
发布了68 篇原创文章 · 获赞 160 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/lzh_99999/article/details/104575873