Java王者笔记——I/O流,线程

Java高级部分,I/O流,线程

I/O流

Java中将IO流分为以下几种类别:

  1. 按流向分为:输入和输出
  2. 按类型分为:字节和字符
  3. 按功能分为:节点流和处理流

在这里插入图片描述

字节流

是将数据以字节为单位进行读写相关操作,字节流一般用于对于一些二进制文件(图片,音频,视频等)进行读写操作,java中的字节流来自以下两个抽象类:

  1. InputStream(字节输入流);
  2. OutputStream(字节输出流);

InputStream类

inputStream类是所有字节输入流的父类,是一个抽象类,常用方法包含以下:

  1. available():获取当前流中的可读字节数;
  2. close():关闭此流;
  3. read():从流中读取一个字节,返回读取到的字节;
  4. read(byte[] b):将流中读取到的字节存入到指定的字节数组中,返回真实读取的长度,读取不到返回-1;
  5. 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类是所有字节输出流的父类,是一个抽象类,常用方法如下:

  1. write(byte[] b):将字节数组中的内容写入输出源;
  2. write(byte[] b,int offset,int len):将字节数组的内容从offset开始写入len长到输出源;
  3. write(int b):将一个字节写入输出源;
  4. flush():将流中的数据强制刷新到输出源;
  5. close():关闭此流。

字符流

  1. Reader 字符输入流
  2. Writer 字符输出流

Reader

字符输入流,是所有字符输入流的父类,是一个抽象类,内部的常见方法如下:

  1. read():读取并返回一个字符;
  2. read(char[] c):将从流中读取的字符存储到字符数组;
  3. read(char[] c,int offset,int len):将从流中读取的字符存入字符数组(跳过offset个字节,写入len长);
  4. ready():返回此流是否准备好被读取的状态;
  5. close():关闭此流、

Writer

字符输出流,是所有字符输出流的父类,是一个抽象类,内部的常见方法如下:

  1. append(char c):向流中追加一个字符;
  2. append(CharSequence c):向流中追加一个字符序列(字符串);
  3. witer(String s):写入一个字符串到目标输出源;
  4. witer(char[] c):写入字符数组到目标输出源。

进程线程

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

线程分为以下五个阶段

  1. 初始:线程刚创建时候的状态;
  2. 就绪:当线程准备运行时候的状态;
  3. 运行:当CPU分配时间片给当前线程,线程进入运行态;
  4. 阻塞:当CPU将时间片从当前线程分配到其他线程时,当前线程进入阻塞态;
  5. 销毁:当线程执行完毕后销毁;
  6. 程的创建与启动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值