------- android培训、java培训、期待与您交流! ----------
Java中的io流
形象的理解可以类比水流,Java中io流是输送数据的方式。从不同角度进行分类有
1、根据数据流方向不同可以分为输入流(InputStream、Reader)、输出流(OutputStream、Writer)
2、根据数据流单位不同可以分为字节流(InputStream、OutputStream)、字符流(Reader、Writer)。
3、根据是否使用缓冲技术可以分为节点流(InputStream、OutputStream、Reader、Writer)、处理流(BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter)
流的操作规律
最痛苦的就是流对象有很多,不知道该用哪个
通过三个明确来完成
1、明确源和目的
源:输入流,InputStream、Reader
目的:输出流,OutputStream、Writer
2、操作的数据是否是纯文本
是:字符流Reader、Writer
不是:字节流 InputStream、OutputStream
3、当体系明确后,再明确要使用哪个具体的对象
通过设备来进行区分
源设备
键盘 system.in 硬盘 File 内存 ByteArrayInputStream
目的设备
控制台 system.out 硬盘 File 内存 ByteArrayOutputStream
4、最后一般都加入缓冲技术转变为处理流,主要是避免频繁访问硬盘提高数据访问效率。处理流中的字节处理流(BufferedInputStream、BufferedOutputStream)较少用,通过转换方法可以使得字节流和字符流之间能相互转化,InputStreamReader是字节流向字符流转换的桥梁,OutputStreamWriter是字符流转换成字节流的桥梁。
IO流练习代码
import java.io.*;
class TransStream
{
public static void main(String[] args)throws IOException
{
//定义获取键盘输入对象
InputStream in=System.in;
//将获取键盘输入对象转换成字符流对象
InputStreamReader isr=new InputStreamReader(in);
//定义字符流对象的缓冲区
BufferedReader bufr=new BufferedReader(isr);
//BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));//以上三句合成一句
BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(System.out));//新建处理流对象,简化书写
String line=null;
while((line=bufr.readLine())!=null)//获取键盘输入
{
if(line.equals("over"))//自定义输入结束标志
break;
bufw.write(line.toUpperCase());//将输入字符转换为大写输出
bufw.newLine();//输出换行
bufw.flush();//把缓冲区的内容刷出来
}
bufr.close();//关闭输入流
bufw.close();//关闭输出流
}
}