递归+IO(字节流)

十三、递归
递归:指在当前方法内调用自己的这种现象
递归的分类:直接递归,间接递归
直接递归称为方法自身调用自己
间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。

注意事项:
递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出
在递归中虽然有限定条件,但是递归次数不能太多,否则也会发生栈内存溢出
构造方法,禁止递归

递归的使用前提:
当调用方法的时候,方法的主体不变,每次调用参数的方法不同,可以使用递归

FileFilter 接口:用于抽象路径名( File 对象)的过滤器
作用:用来过滤文件( File 对象)
抽象方法:用来过滤文件的方法
boolean accept(File pathname)测试指定抽象路径名是否应该包含在某个路径名列表中
参数:File pathname:使用listFlies方法遍历目录,得到的每一个文件对象

FileFilter 接口:实现此接口的类实例可以用于过滤器文件名
作用:用来过滤文件名称
抽象方法:用来过滤文件的方法
boolean accept(File dir,String name)测试指定文件是否应该包含在某一文件列表中
参数:
File dir:构造方法中传递的被遍历的目录
String name:使用listFiles方法遍历目录,获取每一个文件/文件夹名称

注意:两个过滤器接口是没有实现类的,需要我们自己写实现类,重写过滤的方法 accept ,在方法中自己定义过滤的规则

十四、IO流
input / output 数据(字符,字节)一个字符=两个字节,一个字节=8个二进制位
输入流 输出流
字节流 字节输入流InputStream 字节输出流OutputStream
字符流 字符输入流Reader 字符输出流Writer

字节流
一切文件数据在 存储时,都是以二进制数字的形式保存,都是一个一个的字节,传输时一样如此

字节输出流(OutputStream)
写入数据的原理(内存–>硬盘)
java程序 --> JVM 虚拟机 --> os(操作系统) --> os调用写数据的方法 --> 把数据写入到文件中
字节输出流的使用步骤:
1.创建一个 FileOutputStream 对象,构造方法中传递写入数据的目的地
2.调用 FileOutputStream 对象的方法 write ,把数据写入到文件中
3.释放资源(流使用会占用一定的内存,使用完毕要把内存清空,提高程序的效率)

一次写入多个字节:
如果写入的第一个字节是正数(0-127),那么显示的时候会查询ASCII表
如果写入的第一个字节是负数,那第一个字节会和第二个字节,两个字节组成一个中文显示,查询系统默认码表(GBK)

续写:
FileOutputStream(String name, boolean append)
FileOutputStream(File file, boolean append)

换行:
Windows:\r\n
Linux:\n
Mac:\r

字节输入流(InputStream)
FileInputStream:文件字节输入流,把硬盘文件中的数据,读取到内存中使用

读取数据的原理(硬盘 --> 内存)
java程序 --> JVM --> OS --> OS读取数据的方法 --> 读取文件

字节输入流的使用步骤:
1.创建一个 FileInputStream 对象,构造方法中绑定要读取的数据源
2.调用 FileOutputStream 对象的方法 read ,读取完件
3.释放资源

你可能感兴趣的:(java)