IO字节流

Posted xiaozhu1017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO字节流相关的知识,希望对你有一定的参考价值。

1、IO字节流

(1)input输入:把硬盘中的数据,读取到内存中使用;

  output输出:把内存中的数据存储到硬盘中;

(2)OutputStream,是所有字节输出流类的超类,定义了一些子类共性的成员方法:

    1public void close();关闭此输出流,并释放与此流相关联的系统资源;

    2public void flush();刷新此输出流,并强制任何缓冲的输出字节被写出;

    3public void write(byte[] b);b.length字节从指定的字节数组写入此输出流;

    4public void write(byte[] b, int off, int len);从指定的字节数组写入len字节,从偏移量off开始(即off是开始索引);

    5public abstract void write(int b);把一个字节的内容写入此输出流;

(3)文件字节输出流FileOutputStream:把内存中的数据写入到硬盘中;

  1》构造方法:1>FileOutputStream(String name);创建一个向指定名称的文件写入数据的输出流;

  2>FileOutputStream(File file);创建一个向指定File对象表示的文件写入数据的输出流

    构造方法的作用:1>创建一个FileOutputStream对象;

            2>根据构造方法中传递的文件路径,创建一个空文件;

            3>FileOutputStream对象指向创建好的文件;

(4)字节输出流的使用步骤:1》创建一个FileOutputStream对象,构造方法中传递写入数据的目的地;

              2》调用FileOutputStream对象中的方法write,把数据写入到文件中;

              3》释放资源(流的使用会占用一定的内存,使用完毕把内存清空,提高效率);

(5)直接写入字符的方法,使用String类中的方法getBytes()把字符串转换为字节数组,再调用字节输出流的write方法写入;

(6)字节输出流的续写和换行:1》续写:使用含有两个参数的构造方法FileOutputStream(String name, boolean append);FileOutputStream(File file, boolean append);

                boolean append是续写的开关,为true时,创建对象不会覆盖原文件,继续在文件的末尾追加写数据,为false时,创建一个新文件,覆盖原文件;

              2》换行:可以写换行符号,windows linux/n

(7)InputStream字节输入流:抽象类,所有字节输入流的超类,所有子类共性的方法:

  1int read();从输入流中读取数据的下一个字节(读取文件中的一个字节并返回,读取到文件末尾返回-1;读取一个字节后会将指针指向下一个字节);

  2int read(byte[] b);从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中(返回值是读取的有效字节的个数,读取到文件末尾返回-1

    byte数组的作用:是缓冲作用,存储读取到的多个字节,数组的长度一般定义10241024的整数倍);

  3void close();关闭此输入流,并释放与该流相关联的系统资源;

(8)FileInputStream文件字节输入流:将硬盘文件在的数据,读取到内存中使用;

  构造方法:1FileInputStream(String name);

        2FileInputStream(File file);

  构造方法的作用:1>会创建一个FileInputStream对象;

          2>FileInputStream对象指向构造函数中要读取的文件;

(9)字节输入流的使用步骤:1》创建FileInputStream对象,构造方法中绑定要读取的数据源;

              2》使用FileInputStream对象中的方法read,读取文件;

              3》释放资源;

(10)读取的字节数组转换成字符串的方法:

  使用String类的构造方法:1new String(byte[] b);把字节数组转换为字符串;

              2new String(byte[] b, int offset, int length);把字节数组的一部分转换为字符串,offset为开始索引,length为转换的字节个数,

                读取多个字节,转换成字符串时,使用这个方法,因为最后一次读取时,读取的有效字节个数可能小于byte数组的长度;

(11)文件复制的原理:一读一写;

  步骤:1》创建文件字节输入流FileInputStream,指定数据源;

      2》创建文件字节输入流FileOutputStream,指定数据目的地;

      3》使用字节输入流的方法read读取文件;

      4》使用字节输出流的方法write,把读取到的文件写入到目的文件中;

      5》释放资源(先关闭输出流,再关闭输入流);

(12)使用字节流读取中文的问题,1个中文字符会占用多个字节,GBK2个字节,UTF-83个字节;会产生乱码,解决的办法:使用字符输入流;

以上是关于IO字节流的主要内容,如果未能解决你的问题,请参考以下文章

GBK编码字节流与UTF-8编码字节流的转换

IO字节流

IO流学习之字节流

Java IO流-字节流

Java IO 字节流与字符流

IO流之字节流