12+IO流转换流对象流Properties多线程

IO流小结

8个io流

读写相关的代码不难,重点在于需要掌握每个io流的特点

字节流(可以读写任意类型的文件,但是建议只针对非文本类的文件):

1.FileOutputStream: 基本字节输出流 写 没有缓冲区

2.FileInputStream: 基本字节输入流 读 没有缓冲区

3.BufferedOutptStream: 字节缓冲输出流 写 有缓冲区

4.BufferedInputStream: 字节缓冲输入流 读 有缓冲区

字符流(专门读写文本类的文件,可以解决中文乱码问题):

5.FileWriter: 基本字符输出流 写 有缓冲区

6.FileReader: 基本字符输入流 读 有缓冲区

7.BufferedWriter: 字符缓冲输出流 写 有缓冲区 特有方法newLine()

8.BufferedReader: 字符缓冲输入流 读 有缓冲区 特有方法readLine()

应用场景

我要读写普通的图片

我要读写大视频

我要读写普通文本文件

转换流

1.转换:编码和解码(解决中文乱码问题)

A.FileReader=基本字节流FileInputStream + 解码

B.FileWriter=基本字节流FileOutputStream + 编码

C.OutputStreamWriter:具有编码功能 写数据

D.InputStreamReader:具有解码功能 读数据

FileReader继承了InputStreamReader,FileWriter继承了OutputStreamWriter

jdk11之前

转换流可以通过构造方法的第二个参数指定编码表,而基本字符流没有这个功能(只能默认采用utf-8)

因为实际开发项目时,基本上都采用utf-8编码

jdk11之后

转换流可以通过构造方法的第二个参数指定编码表,而基本字符流也有这个功能

转换流基本没有用处

5.应用场景

jdk11之前,读写utf-8格式的文本文件 ABCD 读写GBK格式的文本文件 CD

jdk11之后,读写utf-8格式的文本文件 ABCD 读写GBK格式的文本文件 ABCD

对象流

java是面向对象的编程语言 我们经常会new对象 而且把数据存到对象中了

Student s=new Student(“张三”,“男”,20);

我要想把这三个数据写到文件中保存起来,需要从对象中取数据

如果可以直接保存对象该多好?

  1. 序列化:把java对象写到文件中

  2. 反序列化:从文件中读取对象

  3. Serializable接口是一个空接口,起到标记作用

    Java默认不允许对任何类的对象进行序列化操作,只有碰见实现了Serializable接口的对象才允许

Properties

  1. Hashtable和HashMap是兄弟,Properties就是一个Map集合,只能存String数据

  2. 配置文件:

很多软件或项目都有各种各样的配置文件,常见的有:.xml , .properties

.properties配置文件内容格式有要求:

一行一个键值对,中间用=分割

Properties类的主要作用就是专门用来读写.properties配置文件

多线程

同时干多件事

同时运行多个程序

多线程需要靠硬件支持,主要指的就是CPU

并行:在同一时刻,有多个指令在多个CPU上同时执行。

并发:在同一时刻,有多个指令在单个CPU上交替执行。

进程:正在运行的程序,例如:QQ/Tlias

线程:一个进程可以包含一个线程(单线程程序),也可以包含多个线程(多线程程序)

工厂就是进程,生产线就是线程

QQ就是进程,每个聊天窗口就是一个线程 多线程

迅雷就是进程,每个下载就是一个线程 多线程

为什么好多程序都是多线程的?为什么要学习多线程编程呢?

因为多线程可以提高程序的运行速度/效率 ,例如:同时上传多张图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

InLoadwetrust

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值