黑马程序员 递归+IO总结

------<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();


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值