IO流

1.IO流

  1.概念数组

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

    * Java对数据的操做是经过流的方式编码

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

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

    * 流按操做类型分为两种:视频

    * 字节流 : 字节流能够操做任何数据,由于在计算机中任何数据都是以字节的形式存储的对象

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

  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();
相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息