Cool
Cool
Published on 2021-07-06 / 34 Visits
0
0

InputStream和OutputStream使用

InputStream

InputStream是一个接口

纯净流读取

 //定义流 InputStream 是接口 属于抽象类
        InputStream ins;
        //多态  文件输入流
        ins = new FileInputStream(new File("sea.jpeg"));
        //或者其他流  ins= new xxxInputStream
        //读取一个字节
        //int read = ins.read();
        //10k 字节数组
        byte[] insbyte = new byte[1024 * 10];
        //每个标准文件流的结尾  特殊字节  都是  -1
        //长度就是每次 出流中取出的长度并存放到  字节数组的长度
        int len;
        // 有内容
        while ((len = ins.read(insbyte)) != -1) {
            //具体将流进行操作
            System.out.println(len);
            //每次读取到的字节将全部存入 insbyte中  对流进行转换直接将数组内容进行赋值
           // insbyte 内容大概 158 -145 -100 100
            // 读取到多少转多少
          // outputStream.write(insbyte,0,len);
        }
        //关流
        ins.close();
        outputStream.close();

带文件输出流的流转换

 //定义流 InputStream 是接口 属于抽象类
        InputStream ins;
        //多态  文件输入流
        ins = new FileInputStream(new File("sea.jpeg"));
        //读取一个字节
        //int read = ins.read();
        //10k 字节数组
        byte[] insbyte = new byte[1024 * 10];

        //每个标准文件流的结尾  特殊字节  都是  -1

        OutputStream outputStream=new FileOutputStream(new File("C:\\Users\\86182\\Desktop\\新建文件夹 (2)\\复制.jpg"));
        //长度就是每次 出流中取出的长度并存放到  字节数组的长度
        int len;
        // 有内容
        while ((len = ins.read(insbyte)) != -1) {
            System.out.println(len);

            //每次读取到的字节将全部存入 insbyte中  对流进行转换直接将数组内容进行负责

           // insbyte 内容大概 158 -145 -100 100

            // 读取到多少转多少
           outputStream.write(insbyte,0,len);
        }
        //关流
        ins.close();
        outputStream.close();

BufferedInputStream

 //定义流 InputStream 是接口 属于抽象类
        InputStream ins;
        //多态  文件输入流
        ins = new FileInputStream(new File("sea.jpeg"));
        //多态  文件输出流转buffer 输入流
        ins = new BufferedInputStream(ins);
        //读取一个字节
        //int read = ins.read();
        //10k 字节数组
        byte[] insbyte = new byte[1024 * 10];

        //每个标准文件流的结尾  特殊字节  都是  -1



        //长度就是每次 出流中取出的长度并存放到  字节数组的长度
        int len;
        // 有内容
        while ((len = ins.read(insbyte)) != -1) {
            System.out.println(len);

            //每次读取到的字节将全部存入 insbyte中  对流进行转换直接将数组内容进行负责

            // insbyte 内容大概 158 -145 -100 100

            // 读取到多少转多少
           // ops.write(insbyte, 0, len);
        }
        //关流
        ins.close();
        //ops.close();

完整的一个InputStream 测试

import java.io.*;

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

        //定义流 InputStream 是接口 属于抽象类
        InputStream ins;
        //多态  文件输入流
        ins = new FileInputStream(new File("sea.jpeg"));
        //读取一个字节
        //int read = ins.read();
        //10k 字节数组
        byte[] insbyte = new byte[1024 * 10];

        //每个标准文件流的结尾  特殊字节  都是  -1

        OutputStream outputStream=new FileOutputStream(new File("C:\\Users\\86182\\Desktop\\新建文件夹 (2)\\复制.jpg"));
        //长度就是每次 出流中取出的长度并存放到  字节数组的长度
        int len;
        // 有内容
        while ((len = ins.read(insbyte)) != -1) {
            System.out.println(len);

            //每次读取到的字节将全部存入 insbyte中  对流进行转换直接将数组内容进行赋值

           // insbyte 内容大概 158 -145 -100 100

            // 读取到多少转多少
           outputStream.write(insbyte,0,len);
        }
        //关流
        ins.close();
        outputStream.close();
    }
}

{mtitle title="输出流"/}

OutputStream

简洁输出流


        //定义输出流
        OutputStream ops;
        //多态 输出流转文件输出流
        ops = new FileOutputStream(new File("sea.jpg"));
        byte opsbyte[] = new byte[1024 * 10]; //10k输出流
        //写入
        ops.write(opsbyte);
        //刷入硬盘并关流
        ops.close();

    }

OutputStream测试

import java.io.*;

public class OutputStreamTest {
    public static void main(String[] args) throws IOException {
        //定义输出流
        OutputStream ops;
        //多态 输出流转文件输出流
        ops = new FileOutputStream(new File("sea.jpg"));
        byte opsbyte[] = new byte[1024 * 10]; //10k输出流
        //写入
        ops.write(opsbyte);
        //刷入硬盘并关流
        ops.close();

    }
}

BufferedOutputStream

    //定义输出流
        OutputStream ops;
        //多态 输出流转文件输出流
        ops = new FileOutputStream(new File("sea.jpg"));
        //多态 文件输出流转 buffer文件输出流
        ops=new BufferedOutputStream(ops);

        byte opsbyte[] = new byte[1024 * 10]; //10k输出流
        //写入
        ops.write(opsbyte);
        //刷入硬盘并关流
        ops.close();


BufferedInputStream与BufferedOutputStream 速度很快 推荐使用

{message type="info" content="还能减少读写硬盘的次数"/}

 //定义流 InputStream 是接口 属于抽象类
        InputStream ins;
        //多态  文件输入流
        ins = new FileInputStream(new File("sea.jpeg"));
        //多态  文件输出流转buffer 输入流
        ins = new BufferedInputStream(ins);

        //定义输出流
        OutputStream ops;
        //多态 输出流转文件输出流
        ops = new FileOutputStream(new File("sea.jpg"));
        //多态 文件输出流转 buffer文件输出流
        ops = new BufferedOutputStream(ops);


        //读取一个字节
        //int read = ins.read();
        //10k 字节数组
        byte[] insbyte = new byte[1024 * 10];

        //每个标准文件流的结尾  特殊字节  都是  -1



        //长度就是每次 出流中取出的长度并存放到  字节数组的长度
        int len;
        // 有内容
        while ((len = ins.read(insbyte)) != -1) {
            System.out.println(len);

            //每次读取到的字节将全部存入 insbyte中  对流进行转换直接将数组内容进行赋值

            // insbyte 内容大概 158 -145 -100 100

            // 读取到多少转多少
            ops.write(insbyte, 0, len);
        }
        //关流
        ins.close();
        ops.close();

Comment