复习
SimpleDateFormat类用来对日期格式化和解析
- 格式化(format): 是将日期 --> 字符串
- 解析(parse) : 是将 字符串 —> 日期
一、IO流
I
nput 输入O
utput 输出- 流:是比喻,使用io流传输数据,数据就像水流在流动,(是以Java程序为主体向磁盘的操作,写就叫输出,读就叫输入)
1.2常用类
操作的文件类型不一样,使用的类不一样
- 操作
二进制
文件(图片资源,图片,音频,视频)使用字节流
- InputStream(抽象)----->子类FileInputStream:字节输入流
- OutputStream(抽象)----->FileOutputStream:字节输出流
- 操作
字符
文件(文本,txt),使用字符流
- Reader(抽象)------>子类FileReader:字符输入流
- Writer(抽象)------->子类FileWriter:字符输出流
常用方法
- 凡是读取数据,方法名都是read()
- 凡是写出数据,方法名都是write()
- 但是无论读写,只要使用IO流,用完一定使用close()关闭流
1.3字节流
字节输入流
FileInputStream fis = new FileInputStream(“a.jpg”); 传入文件对象或者文件路径创建字节输入流,有异常要抛出
fis.read(); 读取数据(输入),read一次读取一个字节,读完到末尾返回-1
- 一个一个读取太麻烦,有一个循环
int d = -1; while((d = fis.read())!=-1){ System.out.println(d); } fis.close(); // 操作完一定要关流
fis.close(); 操作完,一定要关流
字节输出流
- FileOutputStream fos = new FileOutputStream(“b.txt”); 以指定文件创建输出流对象,文件不存在会创建出来,如果文件有内容,默认是覆盖
- fos = new FileOutputStream(“b.txt”,true); 后面默认是false覆盖,为true就会追加
练习:拷贝图片
提示:拷贝图片就是读+写数据,是边读边写
public static void main(String[] args) throws IOException {
// 读
FileInputStream fis = new FileInputStream("E:\\text\\zuomian.jpg");
// 写
FileOutputStream fos = new FileOutputStream("E:\\22.jpg");
// 边读边写
int d = -1;
while ((d = fis.read())!= -1){
fos.write(d);
}
fis.close();
fos.close();
}
1.4缓冲字节流
提供一个数组,一次读取数组长度多个数据,也可以一次写出数组长度多个数据
IO体系中提供了这么操作的类:缓冲字节流
- 缓冲字节输入流:BufferedInputStream 默认创建的数组容量8192
- 缓冲字节输出流:BufferedOutputStream
用法:
- 在创建BufferedInputStream对象是需要给构造方法传入一个字节输入流对象
- 在创建BufferedOutputStream对象是需要给构造方法传入一个字节输出流对象
- 即这些缓冲流,是对现有输入输出流包装
二、字符流
字符流,主要是操作字符文件流
- new FileReader(“a.txt”); 创建字符输入流,方法是read()–>读一个
- new FileWriter(File,file); 创建字符输出流,方法是write()—>写一个
缓冲字符流
- 缓冲字符输入流:BufferedReader
- 缓冲字符输出流:BufferedWriter
三、IO流总结
以后操作文件的时候,能分清楚使用字节流操作还是字符流操作
- 记住读写的方法
- read
- write
- 如果发现读写比较慢,想到使用数组或者缓冲区来提高效率
- 实际开发时,如果需要IO操作,一般使用别人封装好的工具类
四、HuTool
官方:https://www.hutool.cn/
3.1导入jar包
jar包就是打包压缩的java文件,里面都是别人写好的代码
怎么导入jar包
- 复制jar包,到项目中粘贴
- 只不过建议是粘贴到项目的lib文件夹
- 右键选择Add To Library
五、匿名内部类
//创建一个接口类
public interface Typec {
void change();
}
//演示类
public static void main(String[] args) {
// 内名类演示1
new Typec(){
@Override
public void change() {
System.out.println("充电...");
}
}.change();
System.out.println("---------------");
// 内名类演示2
Typec typec = new Typec() {
@Override
public void change() {
System.out.println("再充电....");
}
};
typec.change();
}