Java高级部分,I/O流,线程
I/O流
Java中将IO流分为以下几种类别:
- 按流向分为:输入和输出
- 按类型分为:字节和字符
- 按功能分为:节点流和处理流
字节流
是将数据以字节为单位进行读写相关操作,字节流一般用于对于一些二进制文件(图片,音频,视频等)进行读写操作,java中的字节流来自以下两个抽象类:
- InputStream(字节输入流);
- OutputStream(字节输出流);
InputStream类
inputStream类是所有字节输入流的父类,是一个抽象类,常用方法包含以下:
- available():获取当前流中的可读字节数;
- close():关闭此流;
- read():从流中读取一个字节,返回读取到的字节;
- read(byte[] b):将流中读取到的字节存入到指定的字节数组中,返回真实读取的长度,读取不到返回-1;
- read(byte[] b,int offset,int len):将流中读取奥的字节存入到指定的字节数组中(跳过offset个字节存储,存储长度为len),读取不到返回-1。
实现代码
public class ReadFileDemo {
public static void main(String[] args) throws IOException {
//创建File对象
File f = new File("C:\\Users\\mrchai\\Desktop\\a.txt");
//基于File对象创建文件字节输入流
FileInputStream fis = new FileInputStream(f);
//获取当前输入流的可读字节数
int len = fis.available();
//获取文件对象的可读字节数
byte[] b = new byte[len];
fis.read(b);
System.out.println(new String(b));
}
}
public class ReadFileDemo2 {
public static void main(String[] args) throws IOException {
//创建File对象
File f = new File("C:\\Users\\mrchai\\Desktop\\a.txt");
//基于File对象创建文件字节输入流
FileInputStream fis = new FileInputStream(f);
//声明一个指定长度的字节缓冲区(太大会消耗大量运行时内存)
byte[] b = new byte[1024];
//声明临时变量用于存储每次读取的字节的真实长度
int len = 0;
//循环读取
while((len = fis.read(b)) != -1){
String s = new String(b,0,len);
System.out.println(s);
}
fis.close();
}
}
OutputStream类
OutputStream类是所有字节输出流的父类,是一个抽象类,常用方法如下:
- write(byte[] b):将字节数组中的内容写入输出源;
- write(byte[] b,int offset,int len):将字节数组的内容从offset开始写入len长到输出源;
- write(int b):将一个字节写入输出源;
- flush():将流中的数据强制刷新到输出源;
- close():关闭此流。
字符流
- Reader 字符输入流
- Writer 字符输出流
Reader
字符输入流,是所有字符输入流的父类,是一个抽象类,内部的常见方法如下:
- read():读取并返回一个字符;
- read(char[] c):将从流中读取的字符存储到字符数组;
- read(char[] c,int offset,int len):将从流中读取的字符存入字符数组(跳过offset个字节,写入len长);
- ready():返回此流是否准备好被读取的状态;
- close():关闭此流、
Writer
字符输出流,是所有字符输出流的父类,是一个抽象类,内部的常见方法如下:
- append(char c):向流中追加一个字符;
- append(CharSequence c):向流中追加一个字符序列(字符串);
- witer(String s):写入一个字符串到目标输出源;
- witer(char[] c):写入字符数组到目标输出源。
进程线程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
线程分为以下五个阶段
- 初始:线程刚创建时候的状态;
- 就绪:当线程准备运行时候的状态;
- 运行:当CPU分配时间片给当前线程,线程进入运行态;
- 阻塞:当CPU将时间片从当前线程分配到其他线程时,当前线程进入阻塞态;
- 销毁:当线程执行完毕后销毁;
- 程的创建与启动。