Java-IO相关知识总结

Java-IO相关知识总结
一、IO简介
1.定义:Java中的流是指数据流,IO是指操作数据流的手段。
2.本质:为数据源和目的地建立一个数据管道,不管是读取还是写入,本质都是将数据源的目标数据先存入管道,然后根据实际需求操作管道中的数据。
Java-IO相关知识总结_第1张图片
3.分类
3.1根据处理类型不同分为:字节流、字符流
3.2根据流向不同分为:输入流、输出流
3.3按照类型不同分为:文件流、包装流、字符串流、对象流等
4.相关定义
4.1字节流:数据流动中最小的数据单元是字节,字节流可以操作各种文件,如文本、音乐、图片等
4.2字符流:数据流动中最小的数据单元是字符,java中的字符时code码,一个字符占两个字节,字符流是以字符为最小移动单元,字符流只能操作纯文本的文件,原因是最小移动单元不一样,会造成文件损坏
4.3输入流:从外界设备读到程序的通信通道
4.4输出流:程序将数据写出到外界设备的通信通道
二、Java-IO的体系
1.IO体系框架
Java-IO相关知识总结_第2张图片
2.流式部分(字符流和字节流)体系框架
Java-IO相关知识总结_第3张图片
3.常用类
3.1文件流—低级流
概述:用于操作文件的流
File:获取文件相关属性的类,如获取文件名称、路径、删除文件、添加文件等,属于非流式部分。
FileInputStream/FileOutputStream:字节流
FileReader/FileWriter:字符流
注意:使用这几个流的对象之后,需要关闭流对象,因为java垃圾回收器不会主动回收。不过在Java7之后,可以在 try() 括号中打开流,最后程序会自动关闭流对象,不再需要显示地close。
3.2包装流
PrintStream:可以封装(包装)直接与文件交互的节点流对象OutputStream, 使得编程人员可以忽略设备底层的差异,进行一致的IO操作
PrintWriter:除了可以包装字节流OutputStream之外,还能包装字符流Writer
Scanner:可以包装键盘输入,方便地将键盘输入的内容转换成我们想要的数据类型
3.3字符串流:专门操作String字符串的流,没有什么实际意义,因为字符串在程序中可以直接操作,没必要创建一个流对象去操作
StringReader/StringWriter
3.4转换流:字符流和字节流之间转换的桥梁
InputStreamReader/OutputStreamReader
3.5缓冲流—高级流
概述:缓冲流的存在是因为在读取和写入数据的时候,流管道太小,导致程序不断的去执行被读取或被写入的文件,从而降低了程序的运行效率,所以提供缓冲流解决此问题,缓冲流相当于拓宽了数据管道,每次提取相对较多的数据到数据管道中,从而降低了程序频繁调用被读取或被写入的文件,提升了程序运行效率。
注意:缓冲流的创建,由低级流到高级流,缓冲流属于高级流。
BufferedReader/BufferedWriter
BufferedInputStream/BufferedOutputStream
Java-IO相关知识总结_第4张图片
3.6对象流—高级流
概述:将对象以序列的形式读/写的一种流
ObjectInputStram/ObjectOutputStream
重点:对象流的序列化和反序列化
序列化:将一个完整的对象拆分成字节碎片,记录在文件中
反序列化:将文件中的对象字节碎片组合成一个完整的对象
实现序列化的条件:对象必须实现Serializable接口,通常把对象存入集合中,再进行序列化
实现反序列化的条件:必须要给对象提供一个版本号
三、递归算法解决文件遍历的问题

  1. 概述:递归算法是一种直接或间接地调用自身的算法。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解
    2.递归的必要条件:边界条件
    3.实质:递归实际上就是程序在执行的过程中调用了自身,每次调用自身,都会触碰边界条件,如果不符合就一直调用自己,前面执行的每一次程序都在等待后面调用自己的那一次程序,直到程序执行到满足边界条件时,最里面一层执行完毕后,返回给倒数第二层,以此类推,直到程序运行完毕。
    概述图:
    Java-IO相关知识总结_第5张图片
    盖宝塔实例图解:
    Java-IO相关知识总结_第6张图片
    四、读写文件的乱码问题
    1.概述:我们在读取和写入文件相关内容的时候,会出现乱码问题,这是由于编程软件的字符集与读取或写入文件的字符集不同造成的,解决乱码问题,只需要统一字符集即可
    2.字符集
    字符:文字和符号的统称
    字符集出现的原因:不同国家的数字、符号等是通用的,单文字是不一样的,计算机最早产生的时候是按照英文单词,单个的字符设计的,但是其他国家的语言有可能单字符放不下,所以就出现了新的字符编码规则,新的编码规则就是字符集。
    3.常见字符集
    ASCII、UTF-8(万国码):单字节
    GB2312、GB18030、GBK、BIG5:国标码,2字节,处理中文

你可能感兴趣的:(Java基础)