IO

概述
in是指读取,指从磁盘读取到程序的过程。

out是指写出,指从程序里写出到磁盘的过程。

不论是in还是out,都是以程序为准。


在Java中,依据解决的数据单位不同,分为字节流和字符流。

字节流:只能读写文本文件 txt

字符流:所有文件都能够读写 txt jpg mp4


流的概念

数据的读写形象成数据,在管道中流动。

流只能单方向流动

输出流用来读取in

输入流用来写出Out

数据只能从头到尾程序的读写一次


File文件流

概述

封装一个磁盘门路字符串,对这个门路能够执行一次操作。

能够用来封装文件门路、文件夹门路、不存在的门路。


递归

递归是办法外部调用办法自身的景象,是一种算法,须要多次重复计算的状况能够用递归来大大地缩小了程序的代码量。然而递归也有毛病,绝对罕用的一般循环等,运行效率较低;在递归调用的过程当中零碎为每一层的返回点、部分量等开拓了栈来存储,所以递归次数过多容易造成栈溢出等。通过递归的形式删除的文件,在回收站是找不到的。


字节流读取

字节流是由字节组成的,字符流是由字符组成的. Java里字符由两个字节组成.字节流是最根本的,所有的InputStream和OutputStream的子类都是,次要用在解决二进制数据。

流式传输次要指将整个音频和视频及三维媒体等多媒体文件通过特定的压缩形式解析成一个个压缩包,由视频服务器向用户计算机程序或实时传送。在采纳流式传输方式的零碎中,用户不用像采纳下载方式那样等到整个文件全副下载结束,而是只需通过几秒或几十秒的启动延时即可在用户的计算机上利用解压设施对压缩的A/V、3D等多媒体文件解压后进行播放和观看。此时多媒体文件的残余局部将在后盾的服务器内持续下载。


BufferedInputStream子类

BufferedInputStream 为另一个输出流增加一些性能,即缓冲输出以及反对 mark 和 reset 办法的能力。在创立 BufferedInputStream 时,会创立一个外部缓冲区数组(默认8M大小)。在读取或跳过流中的字节时,可依据须要从蕴含的输出流再次填充该外部缓冲区,一次填充多个字节。BufferedInputStream底层,保护了一个byte数组,默认容量是8192,所以读的时候不再是一个一个读,而是一组一组的读了。也叫高级流/缓冲流。


字节流写出

OutputStream抽象类

此抽象类是示意输入字节流的所有类的超类。输入流承受输入字节并将这些字节发送到某个接收器。

FileOutputStream子类


FileOutputStream创建对象时第二个参数boolean append示意是否追加,如果指定true就是追加,否则默认是数据笼罩。


BufferedOutputStream子类

该类实现缓冲的输入流。通过设置这种输入流,应用程序就能够将各个字节写入底层输入流中,而不用针对每次字节写入调用底层零碎。应用高级输入流输入数据,如果不满一个数组无奈刷进来,必须要配合close和flush两个办法,能力把数据刷进来。BufferedOutputStream底层,保护了一个byte数组,默认容量是8192,所以读的时候不再是一个一个读,而是一组一组的读了。也叫高级流/缓冲流。