关于IO流的总结

1.file类

概述:

​ 是文件和目录路径名的抽象表示

​ 文件和目录可以通过file封装成对象的

​ 对于file而言,其封装的不是一个真正存在的文件,只是一个路径名,可以是存在的,也可以是不存在的

功能:

​ mkdir():创建由此抽象路径名 的目录

​ mkdirs():创建由此抽象路径名命名的目录,包括父目录

​ isDirectory():判断是否是文件夹

​ isfile():判断是否是文件

​ exists():判断是否存在

​ getAbsolutePath():获取绝对路径名

​ getPath():获取相对路径名

​ getName():获取名称

​ list():获取目录名称的数组

​ listFiles();获取目录的file对象数组

​ delete():删除文件或目录

★绝对路径名和相对路径名的区别:
绝对路径名:完整的路径名,不需要任何其他信息就可以定位所表示的文件
相对路径名:必须使用取自其他路径名的信息进行解释。

2.递归

介绍

​ 以编程的角度来看,递归指的是方法定义中调用方法本身的现象

​ 把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解

​ 递归策略只需要少量的程序就可以描述出阶梯过程所需要的多次重复计算

注:递归必须有出口。递归的次数不宜太多。

3.IO流

介绍

​ IO:输入/输出

​ 流:是一种抽象概念,是对数据传输的总称。流的本质是数据传输

​ IO流就是用来处理设备间数据传输问题。

分类

​ 按照数据的流向

​ 输入流:读数据

​ 输出流:写数据

​ 按照数据类型来分

​ 字节流:

​ 字节输入流

​ 字节输出流

​ 字符流:

​ 字符输入流

​ 字符输出流

字节流写数据

​ 字节流基类:

​ InputStream:是字节输入流的所有类的超类

​ OutputStream:是字节输出流的所有类的超类

子类名特点:子类名称都是以其父类名作为子类名的后缀

字节输出流: fileOutputStream(String name):创建文件输出流以指定的名称写入文件

字节流写入的方法:

​ write(int b) -一次写一个字节数据

​ write(byte[] b) -一次写一个字节数组数据

​ write(byte[] b , int off, int len) -一次写一个字节数中从off开始的len长度的字节数据

字节流写数据如何换行:

​ windows:/r/n

​ linux:/n

​ mac:/r

字节流写数据怎么实现追加写入?

​ fileOutputStream(String name, boolean append)Boolean为true则能追加写入

异常处理:

try-catch-finally

	try{
		可能出现的异常的代码;
	}catch(异常类名 变量名){
        异常处理的代码;
	}finally{
        执行所有清除操作;
	}
finally特点:

​ 被finally控制的语句一定会执行,除非JVM退出

字节输入流:

​ FileInputStream(String name):通过打开与实际文件的连接来创建一个FileInputStream

​ 步骤:创建字节输入流对象、调用字节输入流对象的读数据方法、释放资源

字节缓冲流

介绍:

​ BufferOutStream:该类实现缓冲出输出流。通过该缓冲流应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用 -字节缓冲输出流对象

​ BufferedInputStream:字节缓冲输入流对象

字符流

​ 字符流 = 字节流+编码表

编码表

字符集

​ 是一个系统支持的所有字符的集合,包括文字、标点符号、图形符号、数字等

​ 常见字符集有:ASCII字符集、GBXXX字符集、Unicode字符集

字符串中的编码解码问题

方法

​ getBytes():将string编码为一系列字节

​ getBytes(String charsetName):使用指定的字符集将String编码为一系列字节

​ String(byte[] bytes) :使用默认的字符集解码指定的字节数组来创建字符串

​ String(byte[] bytes, String charsetName) 通过指定的字符集解码指定的字节数组来创建字符串

InputStreamReader:从字节流到字符流的桥梁 --字符输入流

OutputStreamWriter:从字符流到字节流的桥梁 --字符输出流

字符输出流的方法:

​ write(int c) --写一个字符

​ write(char[] cbuf) --写入一个字符数组

​ write(char cbuf,int off,int len) --写入字符数组的一部分

​ write(String str) --写入一个字符串

​ write(String str, int off,int len) --写入一个字符串的一部分

刷新和关闭的方法

​ flush() --刷新流

​ close() --关闭流

字符输入流的方法:

​ read() --读一个字符数据

​ read(char[] cbuf) --读一个字符串数据

字符缓冲流

介绍:

​ BufferedWriter:将文本写入字符输出流,缓冲字符,已提供单个字符,数组和字符串的高效写入

​ BufferedReader:从字符输入流读取文本。

特有方法:

​ newLine():写一行分隔符

​ readLine():读一行文字

IO特殊操作流程

标准输入、输出流

​ public static final InputStream in:标准输入流。通常该流对应于键盘输入或由主机环境或用户指定 的另一个输入源

​ public static final PrintStream out:标准输出流。通常该流对应于显示输出或由主机环境或用户指 定的另一个输出目标

打印流

​ 字节打印流:PrintStream

​ 字符打印流:PrintWriter

打印流的特点

​ 只负责输出数据,不负责读取数据

​ 永远不会跑出IOException

​ 有自己的特有方法

Properties集合

介绍

​ 是一个Map体系的集合类

​ Properties可以保存到流中或从流中加载

​ 属性列表中的每个键及其对应的值都是一个字符串

方法

​ setProperty(String key,String value) 设置集合的键和值

​ getProperty(String key) 使用指定的键搜索属性

Properties和IO流相结合的方法

​ load(InputStream inStream) 从输入字节流读取属性列表

​ load(Reader reader) 从输入字符流读取属性列表

​ tore(OutputStream out, String comments) 将此属性列表(键和元素对)写入此 Properties表中,以适合于使用 load(InputStream)方法的格式写入输出字节流

store(Writer writer, String comments)  将此属性列表(键和元素对)写入此Properties表中,以适合使用   load(Reader)方法的格式写入输出字符流

猜你喜欢

转载自blog.csdn.net/lucking_good/article/details/90320648