美文网首页
字节流和字符流的区别

字节流和字符流的区别

作者: 流泪回忆不如忍痛努力 | 来源:发表于2018-01-13 15:36 被阅读0次

          以stream结尾都是字节流,以reader和writer结尾都是字符流,两者的区别就是读写的时候一个是按字节读写,一个是按字符。在实际使用时差不多。

          在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。只是读写文件,和文件内容无关的,一般选择字节流。

    package input;

    import java.io.ByteArrayInputStream;

    import java.io.IOException;

    // 输入字节流InputStream的实现

    // 字节数组作为输入源——ByteArrayInputStream

    //

    // 该类包括两个构造方法

    //

    // ByteArrayInputStream(byte[] buf);

    // ByteArrayInputStream(byte[] buf,int offset,int length );

    // 该类重写了InputStream中的所有方法,因此我们可以调用其父类同名的方法进行读写操作。

    //

    // 下面是如何通过一个字节数组创建字节输入流的过程,并从输入流中读取数据输出到操作台。

    public class TestByteArrayInputStream1 {

        public static void main(String[] args) throws IOException {

            // 初始化字节数组

            byte[] buf = new byte[3];

            buf[0] = 100;

            buf[1] = 101;

            buf[2] = 102;

            // 创建输入流

            ByteArrayInputStream input = new ByteArrayInputStream(buf);

            // 从输入流中读取数据

            byte[] out = new byte[3];

            input.read(out);

            System.out.println(new String(out));

            // 关闭输入流

            input.close();

    //         只能读取指定的字节数,不能读取的数据过多,有可能会超过内存的限制

        }

    }

    package com.qfedu.c_reader;

    import java.io.File;

    import java.io.FileNotFoundException;

    import java.io.FileReader;

    import java.io.IOException;

    /*

      IO input Output

      字节流:

      InputStream

      FileInputStream

      OutputStream

      FileOutputStream

      字符流:

      字符流 = 字节流  + 解码

      字符流读取数据,输入字符流

      ---| Reader 输入字符流的基类/超类  抽象类

      ------| FileReader 读取文件的输入字符流

    使用方式:

    1. 找到文件

    判断文件是否存在,是否是一个普通文件

    2. 建立FileReader读取通道

    3. 读取数据

    4. 关闭资源

    */

    public class Demo1 {

    public static void main(String[] args) throws IOException {

    //readerTest2(); 

    }

    public static void readerTest2() throws IOException {

    long start = System.currentTimeMillis();

    // 1. 找到文件:

    File file = new File("");

    // 判断文件是否存在,是否是一个普通文件

    if (!file.exists() || !file.isFile()) {

    throw new FileNotFoundException();

    }

    // 2. 建立FileReder 输入字符流管道

    FileReader fr = new FileReader(file);

    //3.建立缓冲区,利用缓冲区读取数据, 创建字符数组作为缓冲区

    int length = -1; //用于保存读取到的字符个数

    char[] buffer = new char[1024];

    while ((length = fr.read(buffer)) != -1) {

    System.out.println(new String(buffer, 0, length));

    }

    //4. 关闭资源

    fr.close();

    long end = System.currentTimeMillis();

    System.out.println("耗时:" + (end - start));

    }

    }

    相关文章

      网友评论

          本文标题:字节流和字符流的区别

          本文链接:https://www.haomeiwen.com/subject/qtoaixtx.html