ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

IO字节流

2020-04-20 22:52:59  阅读:232  来源: 互联网

标签:文件 字节 构造方法 写入 FileOutputStream IO 读取


1、IO字节流

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

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

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

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

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

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

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

    5》public 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写\r\n,linux写/n;

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

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

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

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

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

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

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

        2》FileInputStream(File file);

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

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

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

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

              3》释放资源;

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

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

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

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

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

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

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

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

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

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

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

标签:文件,字节,构造方法,写入,FileOutputStream,IO,读取
来源: https://www.cnblogs.com/xiaozhu1017/p/12741212.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有