Java IO

IO

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

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

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


在Java中,根据处理的数据单位不同,分为字节流和字符流。

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

字符流:所有文件都可以读写 txt jpg mp4


流的概念

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

流只能单方向流动

输入流用来读取in

输出流用来写出Out

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


File文件流

概述

封装一个磁盘路径字符串,对这个路径可以执行一次操作。

可以用来封装文件路径、文件夹路径、不存在的路径。
Java IO_第1张图片


递归

递归是方法内部调用方法本身的现象,是一种算法,需要多次重复计算的情况可以用递归来大大地减少了程序的代码量。但是递归也有缺点,相对常用的普通循环等,运行效率较低;在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储,所以递归次数过多容易造成栈溢出等。通过递归的方式删除的文件,在回收站是找不到的。


字节流读取

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

流式传输主要指将整个音频和视频及三维媒体等多媒体文件经过特定的压缩方式解析成一个个压缩包,由视频服务器向用户计算机顺序或实时传送。在采用流式传输方式的系统中,用户不必像采用下载方式那样等到整个文件全部下载完毕,而是只需经过几秒或几十秒的启动延时即可在用户的计算机上利用解压设备对压缩的A/V、3D等多媒体文件解压后进行播放和观看。此时多媒体文件的剩余部分将在后台的服务器内继续下载。
image


BufferedInputStream子类

BufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。在创建 BufferedInputStream 时,会创建一个内部缓冲区数组(默认8M大小)。在读取或跳过流中的字节时,可根据需要从包含的输入流再次填充该内部缓冲区,一次填充多个字节。BufferedInputStream底层,维护了一个byte数组,默认容量是8192,所以读的时候不再是一个一个读,而是一组一组的读了。也叫高级流/缓冲流。
image


字节流写出

OutputStream抽象类

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

FileOutputStream子类

Java IO_第2张图片
FileOutputStream创建对象时第二个参数boolean append表示是否追加,如果指定true就是追加,否则默认是数据覆盖。


BufferedOutputStream子类

该类实现缓冲的输出流。通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必针对每次字节写入调用底层系统。使用高级输出流输出数据,如果不满一个数组无法刷出去,必须要配合close和flush两个方法,才能把数据刷出去。BufferedOutputStream底层,维护了一个byte数组,默认容量是8192,所以读的时候不再是一个一个读,而是一组一组的读了。也叫高级流/缓冲流。
Java IO_第3张图片

你可能感兴趣的:(Java IO)