11IO

IO
流的概念
数据从一个目的地到另一个目的地
程序与文件|数组|网络连接|数据库,以程序为中心。
流的分类
流向:输入流与输出流
数据:字节流(二进制,可以处理一切文件 包括 纯文本 doc 音频 视频等)
字符流(文本文件,只能处理纯文本-全部为可见字符 .txt .html)
功能:节点流(包裹源头)
处理流(增强功能,提高性能)
字符流与字节流 与 文件
1、字节流
输入流:InputStream read(byte[] b) read(byte[] b, int off, int len) close()
FileInputStream()
输出流:OutputStream write(byte[] b) write(byte[] b, int off, int len) flush() close()
FileOutputStream
2、字符流
输入流:Reader read(char[] cbuf) read(char[] cbuf, int off, int len) close()
FileReader()
输出流:Writer write(char[] cbuf) write(char[] cbuf, int off, int len) flush() close()
FileWriter()

操作步骤
建立与文件联系
选择对应流
操作 读取|写出
数组大小
读取、写出
释放资源
读取文件
建立联系、File对象 源头
选择流 文件输入流 InputStream FileInputStream
操作 byte[] input = new byte[1024]; 读取文件的大小 输出
释放资源:关闭
// 建立联系
File file = new File(“D:/fileTest/DateUtil.java”);
// 选择流 文件输入流 InputStream FileInputStream
InputStream inputStream = null;

    inputStream = new FileInputStream(file);
    // 操作 byte[] input = new byte[1024];  读取文件的大小 输出
    
    // 创建临时变量len 保存每次读取的长度
    int len = 0;
    // 循环的读取文件中的内容
    while ((len = inputStream.read(buff)) != -1) {
        // 将字节数组变成字符串 输出到控制台上
            String str = new String(buff, 0, len);
            System.out.println(str);
        }

写出文件
建立联系、File对象 目的地
选择流 文件输出流 OutputStream FileOutputStream
操作 write() + flush()
释放资源:关闭
文件拷贝
建立联系 File对象 源头 目的地
选择流
文件输入流 InputStream FileInputStream
文件输出流 OutputStream FileOutputStream
操作:拷贝
byte[] input = new byte[1024]; 读取文件的大小 输出
int len = 0;
while(-1 != (len = 输入流.read)) {
输出流.write()
}
输出流.flush()
释放资源:关闭 两个流
文件夹拷贝
递归查找子孙级文件|文件夹
文件 复制(IO流复制)
文件夹 创建
字符流
纯文本的读取
建立联系
选择流 Reader FileReader
读取 char[] buff = new char[1024];
关闭流
纯文本的写出
建立联系
选择流 Writer FileWriter
写入 write(字符数组,0,长度) flush()
关闭流

作业:写一个复制文件夹的工具类,需要完成功能:
复制指定文件夹下面的所有的子文件及文件夹
处理流
增强功能,提高性能,在节点流之上
https://blog.csdn.net/reliveit/article/details/45819529
缓冲流
字节缓冲流
BufferedInputStream
BufferedOutputStream
字符缓冲流
BufferedReader readLine()
BufferedWriter newLine()
转换流
字节流转为字符流 处理乱码(编码集、解码集)
1、编码和解码概念
解码:二进制 --解码字符集–> 字符
编码:字符 --解码字符集–> 二进制
2、造成乱码的问题:
1)编码与解码的字符集不统一
2)字节数长度不够
其它流
引用类型(对象)保留数据+类型
序列化 输入流:ObjectInputStream readObject()
反序列化 输出流:ObjectOutputStream writeObject()
注意:先序列化后反序列化;反序列化顺序必须与序列化一致。
不是所有的对象都可以序列化。java.io.Serializable
不是所有的属性都需要序列化。transient

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值