zoukankan      html  css  js  c++  java
  • Java学习第二十天

    1:递归(理解)
        (1)方法定义中调用方法本身的现象
            举例:老和尚给小和尚讲故事,我们学编程
        (2)递归的注意事项;
            A:要有出口,否则就是死递归
            B:次数不能过多,否则内存溢出
            C:构造方法不能递归使用
        (3)递归的案例:
            A:递归求阶乘
            B:兔子问题
            C:递归输出指定目录下所有指定后缀名的文件绝对路径
            D:递归删除带内容的目录(小心使用)
    
    2:IO流(掌握)
        (1)IO用于在设备间进行数据传输的操作    
        (2)分类:
            A:流向
                输入流    读取数据
                输出流    写出数据
            B:数据类型
                字节流    
                        字节输入流
                        字节输出流
                字符流
                        字符输入流
                        字符输出流
            注意:
                a:如果我们没有明确说明按照什么分,默认按照数据类型分。
                b:除非文件用windows自带的记事本打开我们能够读懂,才采用字符流,否则建议使用字节流。
        (3)FileOutputStream写出数据
            A:操作步骤
                a:创建字节输出流对象
                b:调用write()方法
                c:释放资源
                
            B:代码体现:
                FileOutputStream fos = new FileOutputStream("fos.txt");
                
                fos.write("hello".getBytes());
                
                fos.close();
                
            C:要注意的问题?
                a:创建字节输出流对象做了几件事情?
                b:为什么要close()?
                c:如何实现数据的换行?
                d:如何实现数据的追加写入?
        (4)FileInputStream读取数据
            A:操作步骤
                a:创建字节输入流对象
                b:调用read()方法
                c:释放资源
                
            B:代码体现:
                FileInputStream fis = new FileInputStream("fos.txt");
                
                //方式1
                int by = 0;
                while((by=fis.read())!=-1) {
                    System.out.print((char)by);
                }
                
                //方式2
                byte[] bys = new byte[1024];
                int len = 0;
                while((len=fis.read(bys))!=-1) {
                    System.out.print(new String(bys,0,len));
                }
                
                fis.close();
        (5)案例:2种实现
            A:复制文本文件
            B:复制图片
            C:复制视频
        (6)字节缓冲区流
            A:BufferedOutputStream
            B:BufferedInputStream
        (7)案例:4种实现
            A:复制文本文件
            B:复制图片
            C:复制视频
            
    3:自学字符流
        IO流分类
            字节流:
                InputStream
                    FileInputStream
                    BufferedInputStream
                OutputStream
                    FileOutputStream
                    BufferedOutputStream
            
            字符流:
                Reader
                    FileReader
                    BufferedReader
                Writer
                    FileWriter
                    BufferedWriter
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    /*
     * 基本字节流一次读写一个字节:共耗时:137049
     * 基本字节流一次读写一个数组:共耗时:243毫秒
     * 高效字节流一次读写一个字节:共耗时:1219毫秒
     * 高效字节流一次读写一个数组:共耗时:80毫秒
     */
    public class SeedTest2 {
        public static void main(String[] args) throws IOException {
            long start = System.currentTimeMillis();        
            //method1();
            //method2();
            //method3();
            method4();
            long end = System.currentTimeMillis();        
            System.out.println("共耗时:"+(end-start)+"毫秒");
            
        }
    
        private static void method4() throws IOException {
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream("G:\[胡彦斌]还魂门(电视剧《老九门》主题曲)_bd.mp4"));
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("G:\demo\胡彦斌2.mp4"));
            System.out.println("高效字节流一次读写一个数组");
            byte[] bys = new byte[1024];
            int len = 0;
            while((len=bis.read(bys))!=-1){
                bos.write(bys, 0, len);
            }
            bos.close();
            bis.close();
            
        }
    
        private static void method3() throws IOException {
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream("G:\[胡彦斌]还魂门(电视剧《老九门》主题曲)_bd.mp4"));
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("G:\demo\胡彦斌1.mp4"));
            System.out.println("高效字节流一次读写一个字节");
            int by=0;
            while((by=bis.read())!=-1){
                bos.write(by);
            }
            
            bos.close();
            bis.close();        
        }
    
        private static void method2() throws IOException {
            FileInputStream fis = new FileInputStream("G:\[胡彦斌]还魂门(电视剧《老九门》主题曲)_bd.mp4");
            FileOutputStream fos = new FileOutputStream("G:\demo\还魂门2.mp4");
            System.out.println("基本字节流一次读写一个数组");
            byte[] bys = new byte[1024];
            int len=0;
            while((len=fis.read(bys))!=-1){
                fos.write(bys, 0, len);
            }
            fos.close();
            fis.close();    
        }
    
        private static void method1() throws IOException {
            FileInputStream fis = new FileInputStream("G:\[胡彦斌]还魂门(电视剧《老九门》主题曲)_bd.mp4");
            FileOutputStream fos = new FileOutputStream("G:\demo\还魂门1.mp4");
            System.out.println("基本字节流一次读写一个字节");
            int by = 0;
            while((by=fis.read())!=-1){
                fos.write(by);
            }
            fos.close();
            fis.close();        
        }
    }
  • 相关阅读:
    JAVA使用POI操作excel
    Weblogic部署项目三种方式
    Linux(centeros)安装weblogic10.3.6教程
    Linux下安装tomcat
    Linux下安装mysql数据库
    Linux(centeros)下安装jdk
    策略模式场景举例
    velocity整合servlet
    'sessionFactory' or 'hibernateTemplate' is required解决方法
    转!数据库连接池概念、种类、配置(DBCPC3P0JndI与Tomact配置连接池)
  • 原文地址:https://www.cnblogs.com/zhuzhutest/p/6144654.html
Copyright © 2011-2022 走看看