Java语言基础六之(IO流、多线程)

本文详细介绍了Java中的IO流,包括访问文件、缓冲流、打印流、转换流和对象流,以及多线程的基本概念、创建方式、生命周期、编号与名称,重点讲解了线程同步机制和死锁问题,同时提到了线程池的应用。
摘要由CSDN通过智能技术生成

目录

1、IO流

1.2 分类

1.2.1 访问文件

1.2.2 缓冲流

1.2.3 打印流

1.2.4 转换流

1.2.5 对象流

1.3 序列化版本号

1.4 transient关键字

2、多线程

2.1 什么是线程

2.1 线程的创建

2.1.1创建方式

2.1.2执行的流程

2.2 线程的生命周期

2.3 线程的编号和名称

什么是守护线程?

2.4 线程同步机制

2.4.1 实现方式

2.4.2 线程安全类和不安全类

2.4.3 什么是死锁

2.4.4 Lock(锁)实现线程同步

2.4.5 Object类常用的方法

2.4.6 线程池


1、IO流

IO就是Input和Output的简写,也就是输入和输出的含义。

1.2 分类

  • 按读写数据的基本单位分类 -- 字节流 和 字符流。

其中字节流主要指以字节为单位进行数据读写的流,可以读写任意类型的文件。
其中字符流主要指以字符(2个字节)为单位进行数据读写的流,只能读写文本文件。

  • 按照读写数据的方向不同分类 -- 输入流 和 输出流(站在程序的角度)

其中输入流主要指从文件中读取数据内容输入到程序中,也就是读文件。
其中输出流主要指将程序中的数据内容输出到文件中,也就是写文件。

  • 按照流的角色不同分类 -- 节点流和处理流

其中节点流主要指直接和输入输出源对接的流。
其中处理流主要指需要建立在节点流的基础之上的流。

io流体系结构

常见流分类

下面就来看一下几个比较重要的流:

1.2.1 访问文件

字节流(FileInputStream,FileOutputStream)
字符流(FileRead,FileWriter)

\bullet  FileInputStream

用于从输入流中以字节流的方式读取图像数据等。

常用的方法:

方法声明 功能介绍
FileInputStream(String name) 根据参数指定的文件路径名来构造对象
int read() 从输入流中读取单个字节的数据并返回,返回-1表示读取到末尾
int read(byte[] b, int off, int len) 从此输入流中将最多len个字节的数据读入字节数组中,返回读取到的字节个数,返回-1表示读取到末尾
void close() 关闭流对象并释放有关的资源
int available() 获取输入流所关联文件的大小

\bullet FileOutputStream 

用于将图像数据之类的原始字节流写入到输出流中。

常用的方法:

方法声明 功能介绍
FileOutputStream(String name) 根据参数指定的文件名来构造对象
FileOutputStream(String name,boolean append) 以追加的方式根据参数指定的文件名来构造对象
void write(int b) 将指定字节写入此文件输出流
void write(byte[] b, int off, int len) 将指定字节数组中从偏移量off开始的len个字节写入此文件输出流
void write(byte[] b) 将 b.length 个字节从指定字节数组写入此文件输出流中
void flush() 刷新此输出流并强制写出任何缓冲的输出字节
void close() 关闭流对象并释放有关的资源

\bullet FileReader 

用于从文本文件读取文本数据内容。

常用的方法:

方法声明 功能介绍
FileReader(String fileName) 根据参数指定的文件名构造对象
int read() 读取单个字符的数据并返回,返回-1表示读取到末尾
int read(char[] cbuf, int offset, int length) 从输入流中将最多len个字符的数据读入一个字符数组中,返回读取到的字符个数,返回-1表示读取到末尾
int read(char[] cbuf) 从此输入流中将最多 cbuf.length 个字符的数据读入字符数组中,返回读取到的字符个数,返回-1表示读取到末尾
void close() 关闭流对象并释放有关的资源

 \bullet FileWriter

用于将文本内容写入到文本文件。

常用的方法:

方法声明 功能介绍
FileWriter(String fileName) 根据参数指定的文件名构造对象
FileWriter(String fileName, boolean append) 以追加的方式根据参数指定的文件名来构造对象
void write(int c) 写入单个字符
void write(char[] cbuf, int off, int len) 将指定字符数组中从偏移量off开始的len个字符写入此文件输出流
void write(char[] cbuf) 将cbuf.length个字符从指定字符数组写入此文件输出流中
void flush() 刷新流
void close() 关闭流对象并释放有关的资源

1.2.2 缓冲流

字节流(BufferedInputStream 与 BufferedOutputStream)
字符流(BufferedReader 与 BufferedWriter)

 \bullet BufferedInputStream

用于描述缓冲输入流。

常用的方法:

方法声明 功能介绍
BufferedInputStream(InputStream in) 根据参数指定的引用构造对象
BufferedInputStream(InputStream in, int size) 根据参数指定的引用和缓冲区大小构造对象
int read() 读取单个字节
int read(byte[] b, int off, int len) 读取len个字节
int read(byte[] b) 读取b.length个字节
void close() 关闭流对象并释放有关的资源

 \bullet BufferedOutputStream

用于描述缓冲输出流,此时不用为写入的每个字节调用底层系统。

常用的方法:

方法声明 功能介绍
BufferedOutputStream(OutputStream out) 根根据参数指定的引用来构造对象
BufferedOutputStream(OutputStream out, int size) 根据参数指定的引用和缓冲区大小来构造对象
void write(int b) 写入单个字节
void write(byte[] b, int off, int len) 写入字节数组中的一部分数据
void write(byte[] b) 写入参数指定的整个字节数组
void flush() 刷新流
void close() 关闭流对象并释放有关的资源

 \bullet BufferedReader

用于从输入流中读取单个字符、字符数组以及字符串。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值