带你深入了解Java!十八、输入和输出处理(一)!
< 输入和输出处理(一)>
学习阶段存储方式的演变
临时存储:变量 ——> 数组 ——> 对象 ——> 对象数组 ——> 集和[最常用的程序内临时存储方式]
持久的存储方式: 文件
一、掌握 File 类的常用API
文件的概念:相关记录或者放在一起的数据集合。他是需要存储在‘长期存储’的设备上的,有它我们可以实现持久化存储
java.io.File;类:可以实现对文件(File)/文件(目录briectory)的操作
-
构造方法:
1、 File(String pathname)直接根据字符串类型地址获取对应的文件对象
2、 File(String parent,String child)根据字符串类型的父路径和子路径获取对应的文件对象
3、 File(File parent,String child)根据文件类型的父路径和字符串类型的子路径获取对应的文件对象 -
普通方法:
1、获取对应的字节数:long length();
2、判断文件目录/文件是否存在: boolean exists();
3、判断是否是文件: boolean isFile();
4、判断是否是文件夹: boolean isDirectory();
5、获取相对路径:String getPath();你可以理解为 File传入什么路径就得到射门么路径
6、获取绝对路径: String getAbsolutepath()如果File构造传入的是相对路径 则可以根据它找到对应的绝对路径,但是如果本身就是路径,则直接显示
File getAbsoluteFile()返回的是一个File类对象
7、创建文件: boolean createNewFile();
8、创建文件夹:boolean mkdir();
9、删除文件/空文件夹: boolean delete();
10、获取文件名称:String getName();
11、获取文件夹的所有子目录的绝对路径: File[] listFiles();
12、获取文件夹的内容: String[] list(); -
运用递归显示查找目录下所有文件夹:
二、掌握流的概念和分类
-
I/O 流的概念:
输入/输出 流:
流:水流、电流、车流、数据流…流动的概念
流动性
方向性:相对于程序参照物,流是由读取和写入操作,是具有方向的
流的分别类:
按照方向性分类:
输入流:读 InputStream Reader
输出流:写 OutputStream Writer
按照处理单元:
-
字节流:可以用来传出一切内容。音频、视频、图片、文本…`【根据美国ASCLL码进行通信传输的】
字节输入流: InputStream 字节输出流: OutputStreanm -
字符流:可以用来传输文本内容【根据不同国家进行了相对应文字转换(它是基于字节流产生的)】
字符输入流: Reader 字符输出流: Writer -
基类是抽象类无法创建对象,所以寻找对应的子类
FileInputStream
FileOutputStream
三、掌握使用字节流实现文件复制
字节输入流:FileInputStream
-
构造:
-
常用方法:
1、 读取一个字节数据,如果到了输入流的末尾会返回 -1:int read();
2、 读取一个字节数组长度的字节数据 返回世界读取到的字节数量,如果到了输入流的末尾会返回 -1:
int read(byte[] b);
3、 读取输入流中从指定索引开始,指定长度的字节数据到字节数组中,如果到了输入流的末尾会返回 -1:int read(byte b,int offs,int len);
4、 关流:void colse();
5、 可以从输如流中读取的字节数目: int available();
字节输出流:FileOutputStream
-
构造:
-
常用方法:
1、 输出一个字节:void write();
2、 输出一个字节数组的内容:void write(byte[] b);
3、 输出一个字节数组中的指定范围内容:void write(byte[] b,int offs,int len);
4、 关流:void close();
5、 强制将缓冲区清空: flush();
示例: