文章目录
- 文件 & IO流
- 文件
- Java访问文件
- 生成文件
- 构造方法(常用)
- 实例方法(常用)
- IO流
- 流的分类
- 常用字节流
- FileInputStream / FileOutputStream
- DataInputStream / DataOutputStream
- BufferedInputStream / BufferedOutputStream
- ObjectInputStream / ObjectOutputStream
- 字符流
- 键盘输入相关
- PrintStream
- 手工输入流
- Properties
文件 & IO流
所在包:java.io包
文件
把相关的记录放在一起,形成的数据的集合,存储于磁盘中。
Java访问文件
通过File类来实现访问,File类可能时文件,也可能是目录。
访问位于磁盘上的文件需要有访问路径,访问路径的表示方法分两种,如下:
D:\\tools\\帮助文档\\JDK帮助文档 //绝对路径
D:/tools/帮助文档/JDK帮助文档 //相对路径
生成文件
File类的使用
构造方法(常用)
File(String pathname); //根据指定路径建立文件对象
File(String parent, String child); //根据父目录和子目录组合创建文件对象
实例方法(常用)
mkdir(); //建立一个目录
mkdirs(); //建立多个目录
createNewFile(); //创建文件
delete(); //删除文件
exists(); //测试此抽象路径名表示的文件或目录是否存在。
isDirectory(); //是否是目录
isFile(); //是否是文件
getName(); //查看文件名
getParent(); //返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
getAbsolutePath(); //返回此抽象路径名的绝对路径名形式。
getPath(); //将此抽象路径名转换为一个路径名字符串。
length(); //返回由此抽象路径名表示的文件的长度。
lastModified(); //返回此抽象路径名表示的文件最后一次被修改的时间。
list(); //返回一个字符串数组,这些字符串为目标抽象路径名目录中的文件和目录。
IO流
英文是stream,是一个通道,里面是一连串流动的字符,按照FIFO(first in , first out)的规则进行流动。
流的分类
- 按流向
a. 输入流
b. 输出流 - 按数据单位
a. 字节流: 适用于通用情况
b. 字符流:适用于处理单个字符或字符串的情况. - 按特殊用途
手工输入流
对象流
打印流
……
常用字节流
FileInputStream / FileOutputStream
适用于通用情况。
构造方法:
//输入
new FileInputStream(String pathname);
new FileInputStream(String parent, String child);
//输出
new FileOutputStream(String pathname);
new FileOutputStream(String pathname, boolean append);
DataInputStream / DataOutputStream
适用于处理指定类型的数据 。
构造方法:
new DatInputStream(InputStream in); //输入
new DatOutputStream(OutputStream out); //输出
BufferedInputStream / BufferedOutputStream
适用于需要提高访问效率,此种流带缓冲区数组功能,数据先放入缓冲区,然后从缓冲区中读取。
构造方法:
new BufferedInputStream(InputStream in);
new BufferedOutputStream(OutputStream out);
ObjectInputStream / ObjectOutputStream
对象流适用于项目中流对象的场景。
注意要点:
- 流中只能流字节,所以需要把对象转为字节。
序列化:对象——>字节
反序列化:字节——>对象 - 一个类中的属性如果也是一个类,则此属性代表的类也必须序列化。
- 当类中属性有
transient
关键字修饰时,此属性不参与流的传输。 - 当类中属性是
static
关键字修饰属性时,此属性在流中正常传输,值受最终所给的值来决定。 - 在要使用对象流的类中,手工加上
serialVersionUID
的编号,防止在序列化时出现序列化版本不一致——流中的序列化版本和本地类中的序列化版本不一致。
字符流
- 字符流里面流的
char
类型数据和String
类型的数据。 - 当项目中要求流动的是文本数据时,首选字符流。
键盘输入相关
PrintStream
System.out.println("……"); //输出结果在控制台显示。
PrintStream(File file); //创建具有指定文件且不带自动行刷新的新打印流。
PrintStream(OutputStream out, boolean autoFlush); //创建新的打印流,带自动行刷新。
手工输入流
System.in
“标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。
Properties
Properties
类表示了一个持久的属性集。Properties
可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。
详见API手册。