Java基础——流

来源:互联网 发布:淘宝大学一飞老师 编辑:程序博客网 时间:2024/05/01 12:31

流,可以分为字符流字节流两种

继承关系

这里写图片描述

字符流——写出

Writer为所有字符输出流的超类
以字符流的形式写出文件:

public void Writer{    FileWriter fw = new FileWriter("test.txt");    //通过PrintWriter的方法,可以更方便地写入    PrintWriter pw = new PrintWriter(fw);    pw.print();    pw.println();    //格式化参数    pw.printf();    //参数可以是char[],string,int    pw.write();}

BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
不使用缓冲区,系统将读一个字符,写一个字符,使用缓冲区,系统将读入的字符存入缓冲区,等缓冲区存满之后,再写出,这样可以提高效率。

public void Writer{    FileWriter fw = new FileWriter("test.txt");    //创建一个带缓冲区的输出流    BufferedWriter bw = new BufferedWriter(fw);    //通过PrintWriter的方法,可以更方便地写入    PrintWriter pw = new PrintWriter(bw);    pw.print();    pw.println();    //格式化参数    pw.printf();    //参数可以是char[],string,int    pw.write();    //操作完成后,一定要关闭输出流    pw.close();}

上面的代码,创建了一个带缓冲区的字符输出流,PrintWriter放在最外层,是因为它有很多很实用的方法
但是,值得注意的是,上面的代码最终还是以字节的形式写入文件,只是流的输入时字符
解释:FileWriter继承了OutputStreamWriter类,OutputStreamWriter是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。

字符流——读入

Reader为所有字符输入流的超类,

以字符流的方式读入:

pulic void Read{    FileReader fr = new FileReader("test.txt");    //创建一个带缓冲区的输入流    BufferedReader br = new BufferedReader(fr);    //获取一行    String getInfo = br.readLine();}

上面的输入流的输入是字节,输出是字符,因为FileReader继承自InputStreamReader,InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。

字节流

字节流的输入输出的思想跟字符流是一样的
输入:

public void Read(){    FileInputStream fis = new FileInputStream("test.txt");    //创建一个带缓冲区的输入流    BufferedInputStream bis = new BufferedInputStrame(fis);    byte b = bis.read();    bis.close();}

输出:

public void Write(){    FileOutputStream fos = new FIleOutputStream("test.txt");    BufferedOutputStream bos = new BufferedOutputStream(fos);    bos.write(int i);    bos.close;}

利用字节流操作大量输入输出的话需要使用循环
使用DataInputStream和DataOutputStream可以直接读写基本数据类型的数据

0 0
原创粉丝点击