002BIO中的基本使用

需注意gb2312和GBK都是兼容ascii编码的。也就是说gbk包含了ascii中的字符映射。
 
我觉得这个应该是1

package stream;


import java.io.*;

public class MyStream {
    public static void main(String[] args) throws Exception {
        writer001();
//        read001();
//        read002();
//            read003();
//            copy001();
        long sta = System.currentTimeMillis();

//        copy002();
        copy003();
        long end = System.currentTimeMillis();
        System.out.println(end-sta+"毫秒");

    }

    private static void copy003() throws Exception {
        MyBufferStream myBufferStream = new MyBufferStream(new FileInputStream("d:/清弄-叙世.mp3"));
        BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("d:/2.mp3"));
        int res = 0;
        while ((res=myBufferStream.myread())!=-1){
            out.write(res);
        }
        myBufferStream.close();
        out.close();

    }

    private static void copy002() throws Exception {
        BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream("d:/清弄-叙世.mp3"));
        BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("d:/1.mp3"));
        int res = 0;
        while ((res=inputStream.read())!=-1){
                out.write(res);
        }
        inputStream.close();
        out.close();

    }

    private static void copy001() throws Exception {
        FileInputStream in = new FileInputStream("d:/1.jpg");
        FileOutputStream out = new FileOutputStream("d:/jingse.jpg");
        byte[] arr = new byte[1234];
        int res = 0;
        while ((res = in.read(arr)) != -1) {
            out.write(arr);
        }
        in.close();
        out.close();
    }

    private static void read003() throws Exception {
        FileInputStream in = new FileInputStream("st.txt");
        byte[] arr = new byte[in.available()];
        in.read(arr);
        System.out.println(new String(arr));




    }

    private static void read002() throws Exception {
        FileInputStream in = new FileInputStream("st.txt");
        byte[] arr = new byte[1234];
        int res =0;

        while ((res = in.read(arr)) != -1) {
            System.out.println(new String(arr,0,res));
        }

    }

    private static void writer001() throws Exception {

        FileOutputStream out = new FileOutputStream("st.txt",true);
        out.write("alsdkjflksdjlffsldkfj".getBytes());
        out.close();

    }

    private static void read001() throws Exception {
        FileInputStream inputStream = new FileInputStream("st.txt");
        int res = 0;
        while ((res = inputStream.read()) != -1) {
            System.out.println((char)res);
        }
        inputStream.close();

    }
}

字节的缓冲区 返回int

package stream;

import java.io.IOException;
import java.io.InputStream;

public class MyBufferStream {
    private InputStream inputStream;
    private byte[] arr = new byte[1234];
    int position = 0;
    int count = 0;
    public MyBufferStream(InputStream inputStream) {
        this.inputStream = inputStream;
    }

    public int myread() throws IOException {
        if (count == 0) {


           count =  inputStream.read(arr);
            if (count < 0) {
                return -1;
            }
            position = 0;
        }
        count--;
        byte b = arr[position];

        position++;
        return b&255;//-1相关的问题


    }

    public void close() throws IOException {
        inputStream.close();
    }


}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值