A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 地狱里的帅灵魂 中级黑马   /  2015-8-31 23:33  /  649 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

递归:
        概述: 就是方法定义中调用方法本身的现象 ;
        注意事项:
                a: 递归一定要有出口
                b: 递归的次数不宜过多

        递归体现的思想:                拆分思想和合并思想
       
        第一个练习题:        求5的阶乘
                                        public static int jieCheng(int n) {
                                                if(n == 1 ){
                                                        return 1 ;
                                                }else {
                                                        return n * jieCheng(n - 1);
                                                }
                                        }
        第二个练习题:        不死神兔
                                       
                                        public static int getCount(int n){
                                                if(n == 1 || n == 2 ){
                                                        return 1 ;
                                                }else {
                                                        return getCount(n - 1) + getCount(n -2) ;
                                                }
                                        }

        第三个练习题:        输出指定目录下所有的以.java结尾的文件的绝对路径
                                       
                                        public static void printFilePathName(File file) {
                                               
                                                // 获取指定的路径下所有的文件或者文件夹对应的File数组
                                                File[] files = file.listFiles() ;
                                               
                                                // 遍历
                                                for(File f : files) {
                                               
                                                        // 判断
                                                        if(f.isFile()){
                                                                if(f.getName().endsWith(".java")){
                                                                        System.out.println(f.getAbsolutePath()) ;
                                                                }
                                                        }else {
                                                                printFilePathName(f) ;
                                                        }
                                               
                                                }
                                       
                                        }

        第四个练习题:        删除文件夹
                       
                                        public static void deleteFolder(File file){
                                               
                                                // 获取指定的路径下所有的文件或者文件夹对应的File数组
                                                File[] files = file.listFiles() ;
                                               
                                                // 遍历
                                                for(File f : files) {
                                                       
                                                        // 判断
                                                        if(f.isFile()) {
                                                                System.out.prinltn(f.getAbsolutePath() + "----" + f.delete()) ;
                                                        }else {
                                                                deleteFolder(f) ;
                                                        }
                                                }

                                                // 删除文件夹
                                                System.out.println(file.getAbsolutePath() + "---" + file.delete()) ;
                                        }

IO流 :

        I: 输入
        O: 输出

        什么是输入和输出: 说这个输入和输出问题是相对于内存而言的.

        分类:
                a: 按照流向进行划分
                        输入流
                        输出流
                b: 按照操作数据的类型
                        字节流
                        字符流

                在以后的开发过程中我们到底使用的是字节流还是字符流?
                如果我们操作的是文本文件,那么我们优先考虑字符流.

        字节流
                字节输入流                InputStream                        读
                字节输出流                OutputStream                写
        字符流               
                字符输入流                Reader                                读
                字符输出流                Writer                                写

        上边的这四个类都是抽象类,不能直接使用,我们只能使用它的子类.并且通过查看API我们可以发现他们的子类都有一个特点: 子类的名称都是一个父类为后缀的

        IO流的操作步骤:
                a: 创建io流对象
                b: 调用方法进行读或者写
                c: 释放资源

        使用字节输出流写数据:
                FileOutputStream
                构造方法:
                        public FileOutputStream(File file) ;
                        public FileOutputStream(String name) ;
                        public FileOutputStream(String name , boolean append) ;                        // 实现追加写
                        public FileOutputStream(File file , boolean append) ;                        // 实现追加写
                写的成员方法:
                        public void write(int by) : 一次写一个字节
                        public void write(byte[] bytes) : 一次写一个字节数组
                        public void write(byte[] bytes , int off , int len ): 一次写一个字节数组中的一部分

                在windows操作系统中的换行符是: "\r\n"
                在linux操作系统中的换行是: "\n"
                在mac操作系统中的换行是:   "\r"

                FileInputStream
                构造方法:
                        public FileInputStream(File file) ;
                        public FileInputStream(String name) ;
                读取数据的方法:
                        public int read(): 一次读取一个字节
                        public int read(byte[] bytes) : 一次读取一个字节数组 , 返回值表示的意思是: 读取到的有效的字节个数

                复制文件:
                        步骤:
                                a: 创建字节输入流和字节输出流对象
                                b: 频繁的读写操作
                                        一次读取一个字节复制文件
                                        一次读取一个字节数组复制文件
                                c: 释放资源

                                public static void copyFile() {
                                       
                                        //  创建字节输入流和字节输出流对象
                                        FileInputStream fis = new FileInputStream("a.txt") ;
                                        FileOutputStream fos = new FileOutputStream("b.txt");

                                        // 一次读取一个字节复制文件
                                        int by = 0 ;
                                        while((by = fis.read()) != -1){
                                                fos.write(by) ;
                                        }

                                        // 释放资源
                                        fos.close() ;
                                        fis.close() ;
                               
                                }

                                public static void copyFile() {
                                       
                                        //  创建字节输入流和字节输出流对象
                                        FileInputStream fis = new FileInputStream("a.txt") ;
                                        FileOutputStream fos = new FileOutputStream("b.txt");

                                        // 一次读取一个字节数组复制文件
                                        byte[] bytes = new byte[1024] ;
                                        int len = 0 ;
                                        while((len = fis.read(bytes)) != -1){
                                                fos.write(bytes , 0 , len) ;
                                        }

                                        // 释放资源
                                        fos.close() ;
                                        fis.close() ;
                               
                                }
        高效的字节输入流和高效的字节输出流:

                高效的字节输出流:   BufferedOutputStream
                                构造方法:   public BufferedOutputStream(OutputStream os) ;

                高效的字节输入流:        BufferedInputStream
                                构造方法:   public BufferedInputStream(InputStream is) ;


                复制文件使用高效的字节输入流和字节输出流:

                        public static void copyFile() {

                                // 创建高效的字节输入流和字节输出流对象
                                BufferedInputStream bis = new BufferedInputStream(new FileInputStream("a.txt")) ;
                                BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("b.txt")) ;
                               
                                // 一次读取一个字节复制文件
                                int by = 0 ;
                                while((by = bis.read()) != -1){
                                        bos.write(by) ;
                                }

                                // 释放资源
                                bos.close() ;
                                bis.close() ;
                        }

                        public static void copyFile() {

                                // 创建高效的字节输入流和字节输出流对象
                                BufferedInputStream bis = new BufferedInputStream(new FileInputStream("a.txt")) ;
                                BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("b.txt")) ;
                               
                                // 一次读取一个字节数组复制文件
                                byte[] bytes = new byte[1024] ;
                                int len = 0 ;
                                while((len = bis.read(bytes)) != -1){
                                        bos.write(byte, 0 , len) ;
                                }

                                // 释放资源
                                bos.close() ;
                                bis.close() ;
                        }

5 个回复

倒序浏览
共勉,加油,黑马
回复 使用道具 举报
学习了,加油
回复 使用道具 举报
总结的不错,赞一个
回复 使用道具 举报
貌似包含好多内容哦~~加油
回复 使用道具 举报
这个好东西,收了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马