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();
  • 相关阅读:
    强化学习的基本迭代方法
    基于文本描述的事务聚类
    学习强化学习之前需要掌握的3种技能
    其它 华硕 ASAU S4100U 系统安装 win10安装 重装系统 Invalid Partition Table 解决
    数据分析 一些基本的知识
    Python 取样式的内容 合并多个文件的样式 自定义样式
    电商 Python 生成补单公司需要的评论格式3
    SpringBlade 本地图片上传 生成缩略图
    SQL Server 字符串截取
    SpringBlade 本地图片上传
  • 原文地址:https://www.cnblogs.com/xsh726/p/11443157.html
Copyright © 2011-2022 走看看