IO字节流,高效字节流BufferedInputStream/BufferedOutputStream,单级/多级文件夹的复制

2020.5.24 课堂笔记

IO流

  1. 用来处理设备之间的数据传输。

  2. 分为:输入流和输出流

  3. 字节流:可以操作任意类型的文件(图片,音频等等)

    字符流:只能操作文本文件。

FileOutPutStream

  1. 创建一个文件输出流,来关联一个文件,当关联的文件不存在,就会创建文件。

  2. 往文件中写入数据:

    • write(int b):一次写入一个字节,如果超过字节范围,就会丢弃掉部分数据。

    • write(byte [] a):一次写入一个字节数组

    • write((byte [] a,int start,int length):一次写入字节数组的一部分

    • 怎么覆盖原文件,或者在源文件后面添加?在使用输出流构造方法时,

      FileOutputStream out = new FileOutputStream(“c.txt”,true);true在文件后面添加,否则覆盖。

package org.westos.demo0524.IO; 
 
/*Author:LH
CreatTime:2020.05.26.19:39*/

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

public class Test2 {
   
    public static void main(String[] args) throws IOException {
   
        FileInputStream in = new FileInputStream("b.txt");
//        每次将输出的数据添加到文档的尾部
        FileOutputStream out = new FileOutputStream("c.txt",true);
        byte[] bytes = new byte[1024 * 8];
        in.read(bytes);
        out.write(bytes);
//        要将换行符变成字节输入
        String s2="\r\n";
        byte[] bytes2 = s2.getBytes();
        in.read(bytes2);
        out.write(bytes2);
        String s="你是谁呀";
        byte[] bytes1 = s.getBytes();
        in.read(bytes1);
        out.write(bytes1);
        in.read(bytes2);
        out.write(bytes2);
        in.close();
        out.close();
    }
}
  1. 流使用完毕,要释放资源。close()方法。
    • 释放资源的原因:通知系统释放管理的文件资源。让IO流对象变成垃圾等待回收器回收
  2. 写入过程中:换行“\r\n”.注意将换行符变成字节数据

流的异常处理

  1. 异常不建议抛出去,而要自己处理,通过try …catch捕捉处理。
  2. 在异常处理中可以做一写逻辑,不仅是打印异常信息。

FileInputStream

  1. 概念:从文件中读取数据。如果读取不到有效的字节就会返回-1

  2. 输入流关联的文件不存在,就会报错。

  3. 构造方法和方法

    • 构造方法:

      FileInputStream(File file):创建一个输入流,传入一个File file。

      FileInputStream(String name):创建一个输入流,传入一个String name。

    • 方法:

      close():关闭文件输入流并释放资源

      read():文件的读入,从此输入流中读取一个数据字节。

      read(byte[] b):从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。

      read(byte[] b, int off, int len):从此输入流中将最多 len 个字节的数据读入一个 byte 数组中,其实位置从off开始。

  4. 流使用完毕,要释放资源。close()方法。

    • 注意:释放资源的位置和释放资源时的空指针异常

文件的复制

模板复制代码:

package org.westos.demo0524.IO;

import java.io.*;

/*Author:LH
CreatTime:2020.05.26.16:48*/
//复制文件
//步骤一:创建字节输入,输出流,输入输出流中封装要复制的文件的路径和名称
//步骤二:封装完,采用一次读取一个字节数组,这样会比较快。
//步骤三:创建字节数组,建议一次读取和写入8KB
//步骤四:将文件读入字节数组
//步骤五:将字节数组的字节,写入到文件中
//注意:建议自己捕捉和处理错误,输入输出对象关闭时,要判断是否为空
public class Test {
   
    public static void main(String[] args) {
   
        File file = new File("b.txt");
        File file1 = new File("c.txt");
        FileInputStream in = null;
        byte[] bytes = new byte[1024 * 8];
        try {
   
            in = new <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值