Java IO 3 : 字节流 和 字符流

本文深入讲解Java中的IO流体系,包括InputStream、OutputStream、Reader和Writer等核心类的功能和使用方法。详细介绍了字节流和字符流的区别,以及如何通过各种流进行文件、数组和管道的读写操作。
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输入输出流体系中常用的流分类
分类字节输入流字节输出流字符输入流字符输出流
抽象基类InputStreamOutputStreamReaderWriter
访问文件FileInputStreamFileOutputStreamFileReaderFileWriter
访问数组BiteArrayInputStreamBiteArrayOutputStreamCharArrayReaderCharArrayWriter
访问管道PipedInputStreamPipedOutputStreamPipedReaderPipedWriter
访问字符串  StringReaderStringWriter
缓冲流BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter
转换流  InputStreamReaderOutputStreamWriter
对象流ObjectInputStreamObjectOutputStream  
抽象基类FilterInputStreamFilterOutputStreamFilterReaderFilterWriter
打印流 PrintStream PrintWriter
推回输入流PushbackInputStream PushbackReader 
特殊流DataInputStreamDataOutputStream  

转载于:https://www.cnblogs.com/Uzai/p/9646895.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值