------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
1:递归(理解) (1)方法定义中调用方法本身的现象。 (2)递归注意事项: A:要有出口,否则就是死递归。 B:次数不能太多,否则内存溢出。 特殊事项:构造方法不能递归定义。 (3)案例:(面试可能见到) A:递归求阶乘 B:递归求兔子问题(斐波那契数列) C:递归遍历目录(带内容的目录) D:递归删除目录(带内容的目录) 2:IO(掌握) (1)IO就是在不同设备间传递数据。 (2)IO流分类: A:流向 输入流 读取数据 输出流 写出数据 B:数据类型 字节流 字节输入流 InputStream 字节输出流 OutputStream 字符流 字符输入流 Reader 字符输出流 Writer 注意: A:四个顶层类都是抽象类。 B:一般每个体系的流都是以基类作为后缀名。 什么时候使用谁? 如果文件能够通过记事本打开并读懂,就用字符流。 其他的全部使用字节流。 (3)FileWriter写入数据 操作步骤: A:创建字符输出流对象 B:调用对象的write()方法 C:释放资源 代码体现: FileWriter fw = new FileWriter("fw.txt"); fw.write("hello,IO"); fw.flush(); fw.close(); 几个小问题? A:创建字符输出流对象做了那几件事情? B:为什么要flush()? C:为什么要close()? D:flush()和close()的区别? //E:怎么实现换行? //F:怎么实现追加写入? G:文件不存在,会创建一个。文件如果存在,到底是重新创建,还是把内容给清空? (4)FileReader读取数据 操作步骤: A:创建字符输入流对象 B:调用对象的read()方法 C:释放资源 代码体现: FileReader fr = new FileReader("fw.txt"); //方式1 //一次读取一个字符 int ch = 0; while((ch=fr.read())!=-1) { System.out.print((char)ch); } //方式2 //一次读取一个字符数组 char[] chs = new char[1024]; int len = 0; while((len=fr.read(chs))!=-1) { System.out.print(String.valueOf(chs,0,len)); } fr.close(); (5)复制文本文件 数据源: 看用那种类型的流,读取数据。 目的地: 看用那种类型的流,写出数据。 案例: 把当前项目路径下的Demo.txt复制到d盘目录下的Copy.txt中。 代码体现: 方式1: FileReader fr = new FileReader("Demo.txt"); FileWriter fw = new FileWriter("d:\\Copy.txt"); int ch = 0; while((ch=fr.read())!=-1) { fw.write(ch); } fw.close(); fr.close(); 方式2: FileReader fr = new FileReader("Demo.txt"); FileWriter fw = new FileWriter("d:\\Copy.txt"); char[] chs = new char[1024]; int len = 0; while((len=fr.read(chs))!=-1) { fw.write(chs,0,len); } fw.close(); fr.close(); |