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学习第二十天的更多相关文章

  1. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  2. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  3. 分享篇——我的Java学习路线

    虽然之前我是开发出身,但是我学习的语言是Objective-c,这个语言使用起来范围比较窄,对于自动化学习来说也是无用武之地,所以我自己学习了Java,对于一个有开发经验的人来说学习一门新语言相对来说 ...

  4. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

  5. Java学习心得之 HttpClient的GET和POST请求

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Java学习心得之 HttpClient的GET和POST请求 1. 前言2. GET请求3 ...

  6. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  7. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  8. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  9. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

随机推荐

  1. subset子集全排序问题

    思路一 可以用递推的思想,观察S=[], S =[1], S = [1, 2] 时解的变化. 可以发现S=[1, 2] 的解就是 把S = [1]的所有解末尾添上2,然后再并上S = [1]里面的原有 ...

  2. 321. Create Maximum Number (c++ ——> lexicographical_compare)

    Given two arrays of length m and n with digits 0-9 representing two numbers. Create the maximum numb ...

  3. MVC,MVP 和 MVVM 的区别之处

    其实我一直以来,虽然做的是前端的工作,但是有一个疑问,就是什么是mvc模式,虽然大概知道,但是具体确实说不上来的的,今天,我就好好总结一下mvc ,mvp,mvvm模式的区别与相同. 1.MVC模式: ...

  4. atp

    一. 新建atp目录,该目录下包含bin(存放启动程序等).config(存放配置程序).lib(存放过程程序).logs(存放生成的日志).cases(存放用例的excel文件)五个目录,并新建一个 ...

  5. jquery常用事件——幕布

    jquery常用事件:https://mubu.com/doc/yIEfCgCxy0

  6. MongDB集群部署

    http://blog.csdn.net/luonanqin/article/details/8497860 参数解释: dbpath:数据存放目录 logpath:日志存放路径 pidfilepat ...

  7. 深入解析Close()和Dispose()的区别

    很多人都认为Close()方法内部会调用Dispose()方法,所以并没有本质的区别!实际上这个看法不是很准确,对有 些类来说,的确Close()和Dispose()没有本质区别,但是对有些类来说并非 ...

  8. 洛谷P2679 子串

    放题解 题目传送门 放代码

  9. python 3中 的subprocess

    commands好像python3.6被去除了,它现在被subprocess替代了 FUNCTIONS getoutput(cmd) Return output (stdout or stderr) ...

  10. Luogu P1131 [ZJOI2007]时态同步 树形DP

    要自下向上调整,尽可能用一个道具修改多个: 搜的时候记录叶节点的最大深度,减一下就好了. #include<cstdio> #include<iostream> #includ ...