• java学习笔记IO之字节输入输出流


    IO字节输入输出流

    OutputStream:字节输出流

      该抽象类是所有字节输出流的超类;

      定义了一些共性的成员方法:

        1.写入一个字节

    void write(int b);//b表示字节

        2.写入字节数组

    void write(byte[]  b);//写入一个字节数组

        3.写入字节数组的一部分

    void write(byte[] b,int off, int len);//off 表示起始索引,len表示写几个

        4.刷新输出流,并强制写出所有缓冲的输出字节

    void flush();

        5.关闭输出流并释放与之有关的所有系统资源

    void close();

    FileOutputStream :文件字节输出流 extends OutputStream

      作用:

        把内存中的字节数据,写入到文件中保存

      构造方法:

        1.创建一个指向File对象表示的文件中写入数据的文件输出流

     

    FileOutputStream(File  file);

        2.创建一个指定名称的文件中写入数据的输出文件流

    FileOutputStream(String  name);//通俗说就是个文件路径名

      构造方法的作用(也就是他干什么事)

        1.会根据构造方法的参数,创建一个文件,如果没有设置追加写的值,文件已经存在的话,就会覆盖

        2.创建一个FileOutputStream对象

        3.将这个对象指向目的地

      IO读写的过程:

    java程序--->JVM--->OS(操作系统)--->调用方法进行读写文件

      FileOutputStream的使用步骤:

        

    1.创建对象,在构造方法中绑定写入数据的目的地
    2.调用对象中的方法write,把数据写入到文件中
    3.释放资源

      注意:

        字节流操作的是字节,所以会直接把字节写入到文件中;

        字符流操作的是字符,先会将字符写到内存的缓冲区中,进行转换,转换为字节,再使用底层的字节流将数据写入到文件中

      字符输出流使用实例1

    1 FileOutputStream  fos= new FileOutputStream("a.txt");//a.txt相对路径,相对项目目录下
    2 fos.write(97);//写入一个字节
    3 fos.close();//关闭流并释放资源

      使用实例2:

    FileOutputStream fos= new FileOutputStream(new File('a.txt'));//构造方法中传递一个File文件对象
    byte[]  b="你好".getBytes();//使用String类方法将字符串转换成字节数组
    fos.write(b);//写入一个字节数组
    fos.close();//关闭资源

      追加写与换行

        1.追加写:boolean  append 参数追加写开关,true是追加,false是不追加,默认是false

        

    FileOutputStream(File file, boolean  append);
    FileOutputStream(String pathname,boolean append);

        2.换行

        win系统:

        linux:/n

        mac:

        可以使用System类的静态方法动态获取换行符

      

    System.getProperty("line.separator");

    InputStream:字节输入流,该抽象类是所有字节输入流的超类

      共性的成员方法:

        1.读取一个字节并返回,没有字节返回-1

    int  read();

        2.读取一定量的字节数,并存储到字节数组中,返回读取到的字节数

    int  read(byte[]  b);

        3.关闭输入流并释放与之有关的所有系统资源

    void close();

    FileInputStream:文件字节输入流 java.lang.FileInputStream  extends  InputStream

      作用:将文件中的数据,以字节的形式读取到内存中

      构造方法:

        

    FileInputStream(File  file);//数据源使用File对象
    FileInputStream(String  pathname);//数据源是一个文件路径

      构造方法的作用:

        1.创建一个字节输入流的对象

        2.会将这个对象指向构造方法中要读取的数据源

      FileInputStream使用步骤:

    1.创建对象,绑定构造方法中的数据源
    2.调用字节输入流的方法read,来读取文件
    3.释放资源

      FileInputStream读取单字节实例:

    1 //创建对象,绑定源文件
    2 FileInputStream  fis= new FileInputStream("a.txt");//a.txt是存在的
    3 //读取单字节。
    4 int len=0;
    5 while((len=fis.read())!=-1){
    6   System.out.println((char)len);//这里的输出就只能是单字节字符,不能是中文,因为一个中文2个字节,读一个字节就输出会乱码;  
    7 }
    8 //关闭流资源
    9 fis.close();

      FileInputStream读取字节数组实例:

      

    //创建输入流对象
    FileInputStream  fis=new FileInputStream(new File("a.txt"));
    //创建要接收字节的数组
    byte[]  b= new byte[1024];//这里一般是1024或者其整数倍
    int  len =0;//这里的len是每次读取的有效个数
    
    while((len= fis.read(b))!=-1){
        
        System.out.println(new String(b,0,len));//这里使用String类的构造方法,b是字节数组,0是开始索引,len是个数    
    }
    /*
    注意:
    1.字节数组的作用:起到缓冲的作用,一次读取多个字节存在数组中,提高效率,这个字节数组的长度一般定义为1024或者是1024的倍数
    2返回值int是什么:每次读取的有效字节个数
    */

      

  • 相关阅读:
    计蒜客 奇怪的国家
    计蒜客 泥塑课
    计蒜客 判断质数
    hiho #1143 : 骨牌覆盖问题·一 (运用快速幂矩阵)
    二叉树建立,先序、中序、后序遍历(c实现)
    hiho #1272 买零食 [Offer收割]编程练习赛2
    hiho #1283 hiho密码 [Offer收割]编程练习赛3
    hiho #1288 微软2016.4校招笔试题 Font Size
    hiho一下 第九十八周 搜索一·24点
    hiho一下 第九十七周 数论六·模线性方程组
  • 原文地址:https://www.cnblogs.com/xuzhaocai/p/8068436.html
Copyright © 2020-2023  润新知