IO流输入输出读写写入高效流

本文详细介绍了Java中的IO流,包括字节流和字符流的分类、使用方法以及高效流的实现。字节流分为输入流和输出流,如FileInputStream和FileOutputStream,字符流如Reader和Writer。高效流如BufferedInputStream和BufferedOutputStream增加了缓冲区,提高了读写速度。字符流虽然以字符为单位操作,但本质上仍是字节流的包装。
摘要由CSDN通过智能技术生成

IO流

IO:input、output

流:指的是程序中数据的流动方向

分类:
按流向分:
输入流:从文件到控制台(读取文件中的数据至控制台)
输出流:从控制台到文件(将控制台中的数据存储至文件)

按数据类型分:
**字节流:**使用单个字节进行数据传输(传输数据最基本单位为字节)
字节输入流 InputStream(抽象类)
字节输出流 OutputStream(抽象类)
**字符流:**使用单个字符进行数据传输(传输数据最基本单位为字符)
字符输入流 Reader(抽象类)
字符输出流 Writer(抽象类)
注意:I/O默认按照数据类型分类

流的使用

1、声明操作文件对象(new File(url))

2、创建相应的流(字节、字符、输入、输出流)

3、进相应的操作(读取、写入)

4、关闭流释放资源(输出流需要先进行刷新)

字节流

字节输入流

字节输入流的抽象类: 程序可以从数据源中连续读取字节的对象称为字节输入流,字节输入流的抽象类

方法 描述
public void close() 关闭输入流
public abstract int read() 以数字的方式读取内容
public int read(byte[] b) 将内容读到byte数组中,同时返回读入的个数

字节输出流

OutputStream: 程序可以向数据源中连续写入字节的对象称为字节输出流 ,字节输出流的抽象类

方法 描述
public void close() 关闭输出流
public abstract void write(int b) 在数据流中写入一个字节
public void write(byte[] b,int off,int len) 在数据流中写入一个指定范围的byte数组
public void write(byte[] b) 在数据流中写入一个byte数组
public void flush() 刷新缓冲区

文件字节输入流

FileInputStream:用于读取文件数据的流,继承于字节输入流

构造方法

FileInputStream(File file)

以指定文件对象作为数据源进行数据的读取

FileInputStream(String fileUrl)

以指定文件名创建对象并作为数据源进行读取

常用方法

int read()

每次从数据源中读取一个字节数据,返回读取长度,如果没有下一个要读取数据则返回-1

int read(byte[] b)

每次从数据源读取指定数组长度的数据并存入数组中,返回读取长度,如果没有下一个套读取数据则返回-1

void close()

关闭数据源释放资源

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
//文件字节输入流
//文件中以字节形式读取数据
public class FileInputSreamTest {
   
	public static void main(String[] args) throws IOException {
   
		// 构造方法
		// new FileInputStream(file)
		// 连接指定文件进行流操作

		// new FileInputStream(name)
		// 连接指定名称的文件进行流操作

		// 流的使用
		// 1创建指定文件
		File file = new File("F://test/a.txt");
		// 2创建相应操作流并指定文件
		FileInputStream fis = new FileInputStream(file);
		// 3进行相应操作
		// int read = fis.read();// 读取一个字节,再次执行会向下读取返回指定字符ascii码值 没有则返回-1
		// (1)fis.read()
		// 每次读取一个字节数据并返回
		// 当进行文字读取时,一个文字根据编码不同占用字节不同,会造成乱码
		// int code=0;
		// while((code=fis.read())!=-1){//现将读取的数据赋值给变量之后进行判断
		// System.out.println((char)code);
		// }
		//(2)fis.read(byte[]);
		byte[] b=new byte[1024];
		int length=0;//每次获取数据的长度
		while((length=fis.read(b))!=-1){
   
			System.out.println(new String(b,0,length));
		}
		// 4关闭流释放资源
		fis.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值