Java IO 3 : 字节流 和 字符流

InputStream 和 Reader:
  InputStream 和 Reader 是所有输入流的抽象基类 , 本身并不能创建实例执行输入,但是他们是所有输入流的模板,他们的方法是所有输入流都可以使用的方法

InputStream:
  int read()   从输入流中读取单个字节,返回读取的字节数据(字节属猪可以直接转换成int类型)
  int read(byte[] b)  从输入流中读取b.length个字节数据,并将其存储在字节数组中,返回实际读取的字节数
  int read(byte[]b , int off , in len)  从输入流中读取最多len个字节的数据,并将其存储在数组b中,并不是从数组起点开始,而是从off位置开始,返回实际读取的字节数。

Reader:
  int read()  从输入流中读取单个字符
  int read(char[] cbuf)  从输入流中读取cbuf.length个字符数据,并将其存储在字符数组中,返回实际读取的字符数
  int read(char[] cbuf , int off , int len)  从输入流中 , 读取len个字符的数据, 将其存储在cbuf字符数组当中,放入数组中时并不是从数组的七点开始, 而是从off位置开始,返回实际读取的字符数

InputStream和Reader 移动记录指针的方法:
  void mark(int readAheadLimit)  在记录指针当前位置记录一个标记(mark)
  boolean markSupported()  判断此输入流是否支持mark()操作,即是否支持标记
  void reset()  将此流的记录指针重新定位到上一次记录标记mark的位置
  long skip(long n)   记录指针向前移动n个字节/字符
InputStream和Reader
OutputStream和Writer:相应的方法
  void write(int c)  将制定的字节/字符输出到输出流中,c既可以代表字节,也可以代表字符
  void write(byte[]/char[] buf)   将字节数组/字符数组中的数据传输到指定流中
  void write(byte[]/char[] buf , int off , int len)  将字节数组/字符数组中从off开始,长度为len的字节/字符输出到输出流中
Writer 可以用字符串来代替字符数组,还有String对象作为参数。
  void write(String str)  将str字符串里包含的字符输出到指定输出流中
  void write(String str , int off , int len)  将Str字符串里从off开始,长度为len的字符输出到指定的输出流中
OutputStream和Writer

操作流的步骤:

  1.建立流的管道,需要一个明确的File数据源
  2.进行字节/字符的读/写的操作
  3.操作完毕,关闭流

public class File02 {

    public static void main(String[] args) throws IOException {
        //创建一个输入流管道
        FileInputStream fis = new FileInputStream(new File("D://demo/a.txt"));
        //创建一个长度为1024的水桶
        byte[] b = new byte[1024];
        //用户保存实际读取的字节数
        int hasRead = 0;
        FileOutputStream out = new FileOutputStream(new File("D://demo/acopy.txt"));
        while((hasRead = fis.read(b)) != -1) {
            //取出水桶中的水, 然后做需要的操作
            out.write(b , 0 , hasRead);
        }
        //关闭流
        out.close();
        fis.close();
    }
}
View Code

 

Java输入输出流体系中常用的流分类
分类 字节输入流 字节输出流 字符输入流 字符输出流
抽象基类 InputStream OutputStream Reader Writer
访问文件 FileInputStream FileOutputStream FileReader FileWriter
访问数组 BiteArrayInputStream BiteArrayOutputStream CharArrayReader CharArrayWriter
访问管道 PipedInputStream PipedOutputStream PipedReader PipedWriter
访问字符串     StringReader StringWriter
缓冲流 BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter
转换流     InputStreamReader OutputStreamWriter
对象流 ObjectInputStream ObjectOutputStream    
抽象基类 FilterInputStream FilterOutputStream FilterReader FilterWriter
打印流   PrintStream   PrintWriter
推回输入流 PushbackInputStream   PushbackReader  
特殊流 DataInputStream DataOutputStream    
posted @ 2018-09-14 16:50  new_boys  阅读(223)  评论(0编辑  收藏  举报