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();
    }
}
时间: 2024-10-06 00:23:25

Java学习第二十天的相关文章

2016最新Java学习计划

一.Java学习路线图 二.Java学习路线图--视频篇 六大阶段 学完后目标 知识点 配套免费资源(视频+笔 记+源码+模板) 密码        第一阶段 Java基础 入门 学习周期: 35天 学完后目标: 1.可进行小型应用程序开发 2.对数据库进行基本的增删改查管理 市场价值:¥5000 计算机基础知识 计算机基础.DOS常用命令.Java概述.JDK环境安装配置.环境变量配置.Java程序入门 1.2015年Java基础视频-深入浅出精华版(强烈推荐) 2.历经5年锤炼(适合初学者入

Java学习第5天

---恢复内容开始--- 今天是2016年5月4号,今天是学习JAVA学习的第5天!今天的主要学习任务是对二维数组的学习. P96 3.7.5 二维数组 动态初始化 数据类型 数组名称 [][]=new 数据类型[行数][列数]   ; 如,int a[][]=new int[7][8]; 静态初始化 数据类型 数组名称 [][]=new 数据类型 [][]{ {值,值,...},{值,值,...},...}; 如,int a[][]=new int[][]{ {1,2,3},{54,6},{8

Java学习-008-判断文件类型实例

此文源码主要为应用 Java 如何判断文件类型的源码及其测试源码.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:2015-2-2 23:02:00,请知悉. Java 判断文件类型源码如下所示: 1 /** 2 * @function 判断文件类型 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java assertFileType

疯狂JAVA学习计划

? Java_StudyPlane ?2015/2/20 ????????大年初二 ????????雨天 1.5小时为1个课时. JAVA学习进度表

java学习教程之代码块

学编程吧java学习教程之代码块发布了,欢迎通过xuebiancheng8.com来访问 java中的代码块包括下面几种: 1.普通代码块 2.构造代码块 3.静态代码块 1.普通代码块很简单看下面这个例子: public class Test{ public static void main(String args[]){ { //此处就是普通代码块,普通代码块中的代码按顺序执行 System.out.println("hello"); } } } 2.构造代码块 public cl

Java学习作业(14.4.21)

前三次作业都是基础语法.真的好水啊.从这次开始记录. 1.编写Java程序,把当前目录下扩展名为txt的文件的扩展名全部更名为back. 1 import java.io.*; 2 import java.lang.*; 3 4 5 public class Home { 6 7 public void reName(String path, String from, String to) { 8 File f = new File(path); //声明File对象,用于导入修改路径 9 Fi

【分享】不知道怎么学java?java学习路线送上!让你不再迷茫!

学习Java之前,先别急,静下心来好好想想:1)你对学习Java是否有兴趣?2)你是否能静下心来坚持不懈地学习?嗯,这是个容易但又绝对不应该忽略的问题,你确信自己对Java感兴趣.而且又有吃苦的准备,那你才可能学好Java!如果具备这两点条件,就请继续往下看(帖子后面我会分享一些java学习教程)Java体系涉及到三个方面:J2SE,J2EE,J2ME(KJAVA).(1)J2SE--Java 2 Platform Standard Edition,即JDK,它是三者的基础,属于桌面级应用开发:

Java 学习路线建议

在大家看之前,我要先声明两点.1.由于我本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线,非Java Web和Java后端开发的同学请适当参考其学习思想即可,切勿照搬.2.下面对于[第一部分]的推荐内容,目的是让你尽快成为一个可以参加工作的Java开发者,更适用于处于待业状态,准备转行Java的同学. 如果你是在校学生,务必要在学好基础(比如计算机系统.算法.编译原理等等)的前提下,再考虑去进行下面的学习.第一部分:对于尚未做过Java工作的同学,包括一

Java学习轨迹【面向对象】(持续更新)

其中部分内容为其他博主所作,侵删 6月12日-7月每日更新 Java学习轨迹 一.面向对象 类和对象 1. new关键字所完成的事情 1)为对象开辟了新的内存空间 2)调用类的构造方法 3)返回生成对象的地址 Dog dog=new Dog(); dog是引用,new Dog()生成了一个Dog对象,引用dog指向所生成对象的地址 2.构造方法 1)构造方法必须与类名相同 2)构造方法没有返回值[且不能使用void作返回值] 3)如果在定义类的时候没有为类声明构造方法java编译器会自动为类添加