【205天】黑马程序员27天视频学习笔记【Day20-上】

发布时间:2019-11-19 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了【205天】黑马程序员27天视频学习笔记【Day20-上】脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

叨逼叨两句

快了快了~快乐快乐~

20-01:IO流概述及分类

概念

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

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

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

  4. 流按流向分为:输入流和输出流。

  5. 流按操作类型分为:

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

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

IO流常用父类

  1. 字节流的抽象父类

    1. InputStream

    2. OutputStream

  2. 字符流的抽象父类

    1. Reader

    2. WrITer

  3. IO程序书写

    1. 使用前,导入IO包中的类

    2. 使用时,进行IO异常处理【IO流处理的是内存和硬盘之间数据的传输,硬盘有可能没有指定的文件】

    3. 使用后,释放资

20-(02-03):FileinputStream

  1. 文件的结束标记是-1

  2. read()一次读取一个字节,却返回int类型。

读取文件

package com.test.demo001;  import java.io.FileInputStream; import java.io.IOException;  public class Demo009 {     public static void main(String[] args) throws IOException {         FileInputStream fis = new FileInputStream("yyy.txt");         int a;         while((a = fis.read())!=-1){             System.out.PRintln(a);   //读取出来的是码表值         }         fis.close();     } } 

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

因为字节输入流可以操作任意类型的文件,比如音频和视频等,这些文件底层都是以二进制形式进行存储的,如果每次读取都返回byte,有可能读到中间时遇到11111111,这11111111是byte类型中的-1,由于Java程序遇到-1就会停止不读了,所有后面的数据就读不到了,所以在读取时,用int类型接收,如果是11111111会在其前面补上24个0凑足4个字节,那么byte类型的-1就变成int类型的255了,这样可以保证整个数据读完,而结束标记的-1就是int类型。【文件用write写入时,也会去掉前面的3个8位,确保数据的完整性】

20-(04-05):FileOutputStream

  1. write方法虽然写出的是一个int数,但是文件上存入的会是去掉前3个8位的byte数

package com.test.demo001;  import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException;  public class Demo009 {     public static void main(String[] args) throws IOException {         FileOutputStream fos = new FileOutputStream("cccccc.txt");//创建输出流对象,如果没有指定文件就创建一个         fos.write(97);  //虽然写出的是一个int数,但是文件上存入的会是去掉前3个8位的byte数         fos.write(98);         fos.write(99);         fos.close();     } } 
  1. 创建输出流对象时,如果没有指定文件就创建一个,如果有就清空那个文件的内容。

  2. 如果想要不清空内容直接续写,按下面的方法写:

FileOutputStream fos = new FileOutputStream("yyy.txt",true);  fos.write(97); fos.write(98); 

20-(06-10):拷贝

拷贝的三种方法

  1. 逐个字节拷贝【效率太低,开发不推荐】

    package com.test.demo001;  import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;  public class Demo009 {     public static void main(String[] args) throws IOException{         FileInputStream fis = new FileInputStream("20.19_day20总结.avi");         FileOutputStream fos = new FileOutputStream("test.avi");         int a;         while((a = fis.read())!= -1){             fos.write(a);         }         fis.close();         fos.close();              } } 
  2. 打包拷贝【容易内存溢出,开发不推荐】

        package com.test.demo001;  import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;  public class Demo009 {     public static void main(String[] args) throws IOException{         FileInputStream fis = new FileInputStream("20.19_day20总结.avi");         FileOutputStream fos = new FileOutputStream("test.avi"); //        int a; //        while((a = fis.read())!= -1){ //            fos.write(a); //        }                  byte[] arr = new byte[fis.available()];         fis.read(arr);         fos.write(arr);                  fis.close();         fos.close();              } }
  3. 定义小数组拷贝【开发推荐】

一般形式

package com.test.demo001;  import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;  public class Demo009 {     public static void main(String[] args) throws IOException{         FileInputStream fis = new FileInputStream("cccccc.txt");         FileOutputStream fos = new FileOutputStream("bbbbbb.txt");         byte[] arr = new byte[2];         int len; //读到的有效字符个数         while((len = fis.read(arr))!= -1){             fos.write(arr,0,len);         }         fis.close();         fos.close();     } }

标准格式

package com.test.demo001;  import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;  public class Demo009 {     public static void main(String[] args) throws IOException{         FileInputStream fis = new FileInputStream("cccccc.txt");         FileOutputStream fos = new FileOutputStream("bbbbbb.txt");         byte[] arr = new byte[1024 * 8];         int len; //读到的有效字符个数         while((len = fis.read(arr))!= -1){             fos.write(arr,0,len);         }         fis.close();         fos.close();     } }

拷贝原理图

【205天】黑马程序员27天视频学习笔记【Day20-上】

脚本宝典总结

以上是脚本宝典为你收集整理的【205天】黑马程序员27天视频学习笔记【Day20-上】全部内容,希望文章能够帮你解决【205天】黑马程序员27天视频学习笔记【Day20-上】所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。