zoukankan      html  css  js  c++  java
  • IO流

    1.IO流

      1.概念

        * IO流用来处理设备之间的数据传输

        * Java对数据的操作是通过流的方式

        * Java用于操作流的类都在IO包中

        * 流按流向分为两种:输入流(读取数据),输出流(写入数据)。

        * 流按操作类型分为两种:

        * 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的

        * 字符流 : 字符流只能操作纯字符数据,比较方便。

      2.IO流常用父类

      * 字节流的抽象父类:

        * InputStream

        * OutputStream

      * 字符流的抽象父类:

        * Reader

        * Writer

      * 3.IO程序书写

        * 使用前,导入IO包中的类

        * 使用时,进行IO异常处理

        * 使用后,释放资源

    2.FileInputStream

     1 //从一个文件中读取数据
     2         /**
     3          * 1。创建一个文件输入对象,并关联a。txt
     4          * 2.定义一个遍历,记录每次读到的字节
     5          * 3.循环遍历打印读出该内容
     6          * read()方法 依次读取一个字节
     7          */
     8         FileInputStream file = new FileInputStream("a.txt");
     9         int b;
    10         while((b = file.read()) != -1) {
    11             System.out.println(b);
    12         }
    13         //释放资源!!
    14         file.close();
    15     
    16     /**
    17      * throws抛出的是文件可能找不到的错误
    18      * 读文件是也有可能读不成功,同样需要进行异常处理
    19      * FileNotFoundException是IOException的一个子类
    20      * 输出内容就是GBK编码,原因GBK编码包含了ASCII码表
    21      * -1表示文件的结尾,当遇到-1时,表示文件已经读取完毕
    22      * 
    23      */

    3.read()方法返回值为什么是int

      read()方法读取的试试一个字节,为什么返回的是int而不是byte

        因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件底层都是以二进制形式存储,如果每次读取都返回byte,

        有可能在读到中间的时候遇到11111111,那么这11111111在byte中表示的是-1,而我们的程序在遇到-1时停止运行,后面的数据

        会丢失,所以在读取时用int类型,如果遇到11111111时会在前面补上3个字节的0,byte类型的-1就变成int类型的255

        这样就可以保证整个数据都可以读取完成,读取完成后,就会返回个-1,结束程序

     

    4.FileOutputStream

      

     1    //write()方法一次录入一个字节
     2     //如果没有b.txt的话,就创建一个
     3     FileOutputStream file = new FileOutputStream("b.txt");
     4     //虽然输入的时int类型,但在写出时会自动转为byte类型,去掉前面的3个字节
     5     file.write(98);
     6     //释放资源
     7     file.close();
     8     
     9     
    10     //追加功能
    11     //重新在录入时,会把原来的数据清除掉,在去添加,也就是把原来的数据覆盖掉
    12     //在关联文件时,加一个true的关键字,就不会覆盖,而是在原来数据之后在添加内容
    13     FileOutputStream file1 =  new FileOutputStream("b.txt",true);
    14     file1.write(98);
    15     file1.write(99);

    5.拷贝文件

      

     1      FileInputStream file = new FileInputStream("F:\21班Java基础课程\课件视频\day20_IO流\video\01.wmv");
     2         FileOutputStream file1 = new FileOutputStream("F:\21班Java基础课程\课件视频\day20_IO流\video\复制.wmv");
     3         //获取关联文件的所有字节
     4         int i = file.available();
     5         //声明一个和文件大小一样的byte的数组
     6         byte [] bytes = new byte[i];
     7         //一次性的读完整个文件的所有内容
     8         file.read(bytes);
     9         //把这个内容一次性的写入指定的文件
    10         file1.write(bytes);
    11         file.close();
    12         file1.close();
  • 相关阅读:
    c# tabcontrol事件以及上下文菜单
    RDBMS架构的开源DW/DSS引擎列表
    spider RPC管理接口
    spider RPC高级特性
    linux TCP: time wait bucket table overflow
    设计一个较好的框架的难点之一--API兼容性的设计
    windows 7/10下安装oracle 10g
    mybatis同时启用mapperscanner和传统DAO
    windows根据端口号找进程
    The POM for XXX:jar:${com.ld.base.service.version} is missing, no dependency information available
  • 原文地址:https://www.cnblogs.com/xsh726/p/11443157.html
Copyright © 2011-2022 走看看