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学习第二十天的更多相关文章
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
- 0035 Java学习笔记-注解
什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...
- 分享篇——我的Java学习路线
虽然之前我是开发出身,但是我学习的语言是Objective-c,这个语言使用起来范围比较窄,对于自动化学习来说也是无用武之地,所以我自己学习了Java,对于一个有开发经验的人来说学习一门新语言相对来说 ...
- Java学习笔记(04)
Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...
- Java学习心得之 HttpClient的GET和POST请求
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Java学习心得之 HttpClient的GET和POST请求 1. 前言2. GET请求3 ...
- 0032 Java学习笔记-类加载机制-初步
JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
随机推荐
- day01.2-python基础
一. python基本数据类型及操作 1. 数字.在python中,数字的初始化方式为直接赋值.如:a = 11 a). 加法运算 b ...
- win7 64位环境下,为python2.7 安装pip
第一步: 安装python并配置好环境变量 参见:http://blog.csdn.net/donggege214/article/details/52062855 第二步: 下载setuptools ...
- 洛谷P2510 [HAOI2008]下落的圆盘(计算几何)
题面 传送门 题解 对于每个圆,我们单独计算它被覆盖的周长是多少 只有相交的情况需要考虑,我们需要知道相交的那段圆弧的角度,发现其中一个交点和两个圆的圆心可以构成一个三角形且三边都已经知道了,那么我们 ...
- 2008R2 无法安装 HDP Apache 系列服务解决方案
执行下面的 PS 就好了. 特别是 第三行在执行的时候选择 [A] Set-ExecutionPolicy "AllSigned" Enable-PSRemoting Set- ...
- 使用Lazy对构造进行重构后比较
用于测试在是否使用Lazy 的情况下,服务器负载,及服务提供情况对比. 服务器环境: 在此机器上安装了1 Hyper-V ,分配走1G内存,同时在本地上安装 SQLServer , 在 ...
- 修复win10无法双击打开txt文档.reg
Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\.txt]@="txtfile""Content Type& ...
- java 中的Debug eclipse 开发工具使用
Eclipse的debug模式:代码调试 * Eclipse或MyEclipse就是java的开发工具 * Eclipse开源的.免费的Java开发工具 * MyEclipse基于Eclipse开发出 ...
- DHCP协议及基本实现原理
DHCP(Dynamic Host Configuration Protocol):动态主机配置协议. DHCP的优缺点 DHCP服务优点:网络管理员可以验证IP地址和其它配置参数,而不用去检查每个主 ...
- Python之freshman08 Socket
1. Socket介绍 概念 A network socket is an endpoint of a connection across a computer network. Today, mos ...
- 007 Android 单击事件、toast使用
第一种按钮点击事件(最常用): button=findViewById(R.id.button); button2=findViewById(R.id.button2); button.setOnCl ...