一、字节输出流开发步骤
(1)创建一个字节输出流对象(这里假设一个文件out.txt):OutputStream out = new FileOutputStream("out.txt");
(2)使用流对象给当前文件中写数据
两种方式:a.写一个字节:write(int i);
b.写一个字节数组:write(byte[] bys);
(3)释放资源
关闭流对象
二、字节输入流开发步骤
(1)创建字节输入流对象:FileInputStream in = new FileInputStream("in.txt");
(2)读数据
两种方式:a.一次读一个字节
int by = 0;
while((by = in.read())!=-1){
System.out.println((char)by);//强制类型转换
}
b.一次读一个字节数组(比第一种方式速度快) public int read(byte[] bys);
byte[] bys = new byte[1024];
int len = 0;
while((len = in.read(bys))!=-1){
System.out.println(new String(bys.0.len));
}
(3)释放资源
三、读写操作(复制文本文件、音频文件、图片文件等)
复制:
(1)分析源文件:所存储的路径→使用字节输入流读文件
(2)分析目的地文件:将要复制到盘符下的路径→使用字节输出流写对象
(3)方法:一次读一个字节(边读边写这个字节)/一次读一个字节数组(输出流对象.write(bys.0.len));
四、递归:方法调用方法本身的一种现象 注意:构造方法没有方法递归
举例:例如有一个a方法,当它递归时,a方法会一直调用自己,可以看成a(a(a(a(a(...........,方法一直没有结束,直到将内存耗尽报错(方法只开不关)。
所以使用递归时一定要定义递归头和递归体,让方法知道什么时候应该开始递归,什么时候结束递归。
在实际需要中,我们更依赖于循环,凡是递归能做的循环都可以做,并且循环的速度快,内存占用小,效率较高,一般不会造成内存耗尽的情况。
前提条件:1)必须写一个方法
2)出口条件(最终要能结束掉)
3)符合需求的一些规律
解决思路:分成若干个小问题