字节流概述

一、InputStream和OutputStream

这两个类提供了大量的读写操作方法,但是由于它们是抽象类,不能进行实例化,所以要使用的时候,要调用器其子类进行操作。

如果对于这两类不太了解,也可看一下这个 IO流的理解

1.了解一下InputStream的方法

Modifier and Type方法描述
intavailable​()

从下一次调用此输入流的方法返回可从该输入流读取(或跳过)的字节数,而不会阻塞。

voidclose​()

关闭此输入流并释放与流相关联的任何系统资源。

voidmark​(int readlimit)

标记此输入流中的当前位置。

booleanmarkSupported​()

测试此输入流是否支持 markreset方法。

abstract intread​()

从输入流读取数据的下一个字节。

intread​(byte[] b)

从输入流中读取一些字节数,并将它们存储到缓冲器阵列 b

intread​(byte[] b, int off, int len)

从输入流读取最多 len个字节的数据到字节数组。

byte[]readAllBytes​()

从输入流读取所有剩余字节。

intreadNBytes​(byte[] b, int off, int len)

将所请求的字节数从输入流读入给定的字节数组。

voidreset​()

将此流重新定位到最后在此输入流上调用 mark方法时的位置。

longskip​(long n)

跳过并丢弃来自此输入流的 n字节的数据。

longtransferTo​(OutputStream out)

从该输入流中读取所有字节,并按读取的顺序将字节写入给定的输出流。

2.字节流读写文件

package IO;

import java.io.FileInputStream;

import java.io.IOException;

public class test1 {
//读取文件操作
    public static void main(String[] args) throws IOException {
//        后面括号里加上true,课不格式化输入字符进文件
        FileInputStream in=new FileInputStream("C:\\Users\\Eliauk\\Desktop\\java\\IOFile\\test1.txt");
        int b=0;
        while (true){
            b=in.read();
            if(b==-1){
                break;
            }
            System.out.println(b);
//           finally{
//               try{
//                   if(in!=null) in.close();
//               }catch (Exception e){
//                   e.printStackTrace();
//               }
//            }
        }
        //    进行抛出异常,但当时如果遇到异常,close()方法无法执行下去,所以一般把关闭流写在finally代码当中

        }
    }


字节流的缓冲区

package IO;

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

//进行写入操作,写入的文件如果没有,会临时创建一个文件,格式化,然后进行写入
public class test2 {
    public static void main(String[] args) throws IOException {
        FileOutputStream out=new FileOutputStream("C:\\Users\\Eliauk\\Desktop\\java\\IOFile\\test2.txt");
        String str="你的名字";
//定义一个长度为1024的字节数组
        byte[] b=str.getBytes();
        for (int i=0;i<b.length;i++){
            out.write(b[i]);
        }
        out.close();

    }
}

3.字节缓冲流

使用了两个带缓冲的字节流,分别是BufferedputStream和BufferedputStream,这两个流内部都定义了一个大小为8192的字节数组,进行缓存文件数据,加快读写速度。

package IO;

import java.io.*;

public class test5_buffer {
    public static void main(String[] args) throws IOException {
//        BufferedInputStream以接受InputStream类型的参数作为对象
        BufferedInputStream in=new BufferedInputStream(new FileInputStream("C:\\Users\\Eliauk\\Desktop\\java\\IOFile\\picture\\View2.png"));
        BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream("C:\\Users\\Eliauk\\Desktop\\java\\IOFile\\picture\\View3.png"));
        int len=0;
        long beginTime=System.currentTimeMillis();
        while ((in.read())!=-1){
            out.write(len);
        }
        long endTime=System.currentTimeMillis();
        System.out.println("花费的时间为:"+(endTime-beginTime)+"毫秒");
        in.close();
        out.close();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值