13.IO

I/O流
概念:在变量,数组,和对象存储的数据都是暂时的,程序结束时就会丢失。要永久保存到磁盘文件中,可以使用I/O技术将数据保存到文本文件、二进制文件甚至是压缩文件中,以达到永久保存数据的要求
一、File类
概念:File类保存了对文件的操作,实现创建、删除、重命名文件等操作。也可以用来获取文件信息,如:文件所在目录,文件长度、文件读写权限等,数据流可以将数据写入到文件中。
构造方法:
| 构造方法 | 参数说明 |
|---|---|
| File(String pathname); | pathname:文件全路径包含文件名。 |
| File(String parent,String child); | parent:路径。 child:文件名 |
| File(File f,String child); | f:文件对象只包含了路径没有文件名。child:文件名 |
获取文件信息:
| 方法名 | 返回值 | 描述 |
|---|---|---|
| getName() | String | 获取文件名称 |
| length() | long | 获取文件长度(字节为单位) |
| getAbsolutePath() | String | 获取文件绝对路径 |
| getParent() | String | 获取文件父路径(不含文件名) |
| lastModified() | long | 最后一次修改时间 |
| exit() | boolean | 文件是否存在 |
| isFile() | boolean | 是不是文件 |
| isDirectory() | boolean | 是不是目录(文件夹) |
| isHidden() | boolean | 是否为隐藏文件 |
| canRead() | boolean | 权限是否为可读 |
| canWrite() | boolean | 权限是否为可写 |
| transferTo | File1.transferTo(File2) | 将File1的内容写入File2中 |
二、输入流 InputStream
概念:从文件、网络、压缩包等一切数据源 读取数据 到程序中,InputStream类是字节输入流的抽象类,所有字节输入流的父类。
常用方法:
| 方法 | 概述 |
|---|---|
| **read(); ** | 从输入流读取数据的下一个字节。返回0~255范围内的int字节值。如果读取完到末尾则返回-1。 |
| **read(byte[] b); ** | 从输入流读取一定的长度的字节,并以整数的形式返回字节数。 |
| **close(); ** | 关闭输入流并释放与该流相关的所有系统资源。 |
| skip(long n); | 跳过输入流上的n个字节并返回实际跳过的字节数。 |
| reset(); | 将输入指针返回到当前所做的标记处。 |
| mark(int readlimit); | 在输入流的当前位置放一个标记,readlimit参数告知此输入流在标记位置失效之前允许读取的字节数。 |
| markSupported(); | 判断 如果当前流支持mark()/reset()操作则返回true |
注意:不是所有的InputSteam子类都支持InputStream的方法例如skip()、mark()、reset()。
InputStream 用来处理字节,不适合处理字符,处理字符使用Reader类
三、输出流OutputStream
概念:把数据写入到目的地。
OutputStream类是字节输出流的抽象类,所有字节输出流的超类。
所有方法的返回值为void;
常用方法:
| 方法 | 概述 |
|---|---|
| write(int b); | 将指定的字节写入输出流中。 |
| write(byte[] b); | 从指定的byte[]数组将字节写入此输出流。 |
| write[byte[] b,int off,int len]; | 将指定的byte数组从偏移量off开始len个字节写入此输出流。 |
| flush(); | 强制清空缓存区,把数据写入目的地。 |
| close(); | 关闭输出流并释放与该流相关的所有系统资源。 |
四、文件I/O流FileInputStream / FileOutputStream
FileInputStream和FileOutputStream都是用来操作磁盘文件,字节读写
1、文件输入流 FileInputStream
常用构造方法:
| 构造方法 | |
|---|---|
| FileInputStream(String name) | name:文件所在全路径 |
| FileInputStream(File file) | file:文件所在对象 |
2、文件输出流 FileOutputStream
常用构造方法:
| 构造方法 | |
|---|---|
| FileOutputStream(String name) | name:输出目的地 的文件全路径 |
| FileOutputStream(File file) | file:输出目的地 的文件对象 |
五、缓冲文件I/O流 BufferedInputStream / BufferedutputStream
六、字符I/O流 FileReader / FileWriter
由于FileInputStream / FileOutputStream 都是字节读取,因为每个中文占用两个字节,对于的中文读取可能会出现乱码的情况,采用Reader/Writer类可以避免这种乱码的出现

浙公网安备 33010602011771号