JAVA-IO流-字符流、字节流使用模板

本文详细介绍了如何使用Java的BufferedReader和BufferedWriter进行字符流操作,以及BufferedInputStream和BufferedOutputStream进行字节流处理,强调了流的类型选择和效率提升,并展示了如何正确关闭流以保证资源释放。

IO流-字符流、字节流使用模板

使用之前

1.使用IO流之前,首先要弄清楚要操作的文件是什么类型
2.是字符就用字符流,是字节就用字节流
3.使用缓冲流可以提高效率
4.使用完之后必须关闭流,不然不会生效

字符流

/**
 * 字符输入流连续读、读一行
 * 字符输出流 将读到的数据写入文件
 */
 public static void bufferedReaderAndWriter(){
    String oldPath = "d:\\a.txt";
    String newPath = "d:\\b.txt";
    BufferedReader bufferedReader = null;
    BufferedWriter bufferedWriter = null;
    char[] chars = new char[1024];
    int len;
    try {
        bufferedReader = new BufferedReader(new FileReader(oldPath));
        bufferedWriter = new BufferedWriter(new FileWriter(newPath));

        //字符流读一行
        //bufferedReader.readLine();
        //字符流连续读
        while ((len = bufferedReader.read(chars)) != -1){
            //字节流写入
            bufferedWriter.write(new String(chars,0,len));
            bufferedWriter.newLine();
        }
        System.out.println("传输完毕");
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if(bufferedReader != null){
                bufferedReader.close();
            }
            if(bufferedWriter != null){
                bufferedWriter.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

字节流

/**
 * 字节输入流读取二进制文件
 * 字节输出流 将读到的数据写入文件
  */
public static void bufferedInputStreamAndOutputStream(){
    String oldPath = "d:\\cloudmusic\\cardigan - Taylor Swift.mp3";
    String newPath = "d:\\b.mp3";
    int len;
    byte[] bytes = new byte[1024];
    BufferedInputStream bufferedInputStream =null;
    BufferedOutputStream bufferedOutputStream = null;
    try {
        bufferedInputStream = new BufferedInputStream(new FileInputStream(oldPath));
        bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(newPath));
        //字节流一次读1024个字节
        while ((len = bufferedInputStream.read(bytes)) != -1){
            bufferedOutputStream.write(bytes,0,len);
        }
        System.out.println("传输完毕");
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if(bufferedInputStream != null){
                bufferedInputStream.close();
            }
            if(bufferedOutputStream != null){
                bufferedOutputStream.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值