java学习01 - 流

流的作用

抽象输入输出的概念,专注于数据在代码和内存之间的沟通

流的分类

1、按输入输出分类

  1. 输入流:指从程序输入到内存的流
  2. 输出流:指从内存输入到程序的流

2、按数据格式分类

  1. 字节流:指数据格式给字节的流
  2. 字符流:指数据格式为字符的流

java.io 流介绍

1、输入字节流 InputStream(抽象)

InputStream 为所有输入字节流的积类,常用方法:read,close

//InputStream is;
byte[] arr = new byte[1024];
while(is.read(arr) != -1){
	System.out.println(new String(arr));
}
is.close();

根据不同的介质(数据来源)提供了

2、输出字节流 OutputStream(抽象)

OutputStream 为所有字节输出流的积类,常用方法:write,flush,close

//OutputStream os;
String msg = "Hello OutputStream";
byte[] arr = msg.getByte();
os.write(arr);
os.flush();
os.close();

3、输入字符流 Reader

Reader输入字符流抽象类。子类需实现 read方法

//Reader rd
char cArr[] = new char[1024] ;
rd.read(cArr);
rd.close();

4、输出字符流 Writer

Reader 输出字符流的抽象类。之类需实现write方法

//Writer wt
String msg = "Hello Writer";
wt.write(msg);
wt.flush();
wt.close();

java 文件字节流

1、FileInputStream、FileOutputStream

用于二进制文件操作
FileInputStream继承于InputStream
FileOutputStream继承于OutputStream

//FileInputStream and FileOutputStream
String msg = "Hello Writer";
FileInputStream fis = new FileInputStream("D:\\test.txt");
FileOutputStream fos = new FileOutputStream("D:\\target.txt");
byte[] tmp= new byte[1024];
int len;
       
while((len = fis.read(tmp)) != -1){
	fos.write(tmp, 0, len);
}
fos.flush();
fos.close();
fis.close();

2、BuffereInputStream、BuffereOutputStream

带有缓冲区的字节输入流,提高文件和内存的沟通效率
继承于 FilterInputStream和FilterOutputStream,FilterInputStream和FilterOutputStream是装饰器流,本身没有实现任何功能,依赖于子类(如BuffereInputStream、BuffereOutputStream)来实现能力

BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\test.txt"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\target.txt"));
byte[] tmp = new byte[2*1024];
int len;
while((len = bis.read(tmp)) != -1){
	bos.write(tmp, 0, len);
}
bos.flush();
bos.close();
bis.close();

java 文件字符流

InputStreamReader、OutputStreamWriter

这个是io流的重点,它是沟通字节流和字符流的桥梁,用于字节流装换为字符流
InputStreamReader 继承于 reader
OutputStreamWriter 继承于 writer

InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\test.txt"));
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\\target.txt"));
char[] tmp = new char[1024];
int len;
while((len = isr.read(tmp)) != -1){
	osw.write(tmp, 0, len);
}
osw.flush();
osw.close();
isr.close();

FileReader、FileWriter

用于操作字符文件
FileReader继承于InputStreamReader
FileWriter继承于OutputStreamWriter
其用法类似于InputStreamReader、OutputStreamWriter

FileReader fr = new FileReader("D:\\test.txt");
FileWriter fw = new FileWriter("D:\\target.txt");
char[] tmp = new char[1024];
int len;
while((len = isr.read(tmp)) != -1){
	osw.write(tmp, 0, len);
}
osw.flush();
osw.close();
isr.close();

BufferedReader、BufferedWriter

很明显是对FileReader、FileWriter的buffered封装

BufferedReader br = new BufferedReader(new FileReader("D:\\test.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\target.txt"));
String readline;
while((readline = br.readLine()) != null){
	bw.write(readline);
	bw.newLine();
}
bw.flush();
bw.close();
br.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值