Java IO流
Java IO 流
一、文件操作
1、创建文件
new File(String pathname)
根据路径构建一个File对象
new File(File parent, String child)
根据父目录文件+子路径构造
new File(String parent, String child)
根据父目录+子路径构建
创建文件对象后,执行 file.createNewFile
2、获取文件信息
file.getName()
文件名字
file.getAbsolutePath()
文件绝对路径
file.getParent
文件父级目录
file.length()
文件大小(字节)
file.exists()
文件/目录是否存在
file.isFile()
是否是文件
file.isDirectory()
是否是目录
3、目录操作
file.delete()
删除文件/目录
file.mkdir()
创建一级目录
file.mkdirs()
创建多级目录
二、Java IO流原理及其分类
I/O是input/output的缩写,按照操作数据单位不同分为字节流
,字符流
。字节流操作二进制文件时更加适合,字符流操作文本文件更加适合。按照流的角色分为节点流
、处理流/包装流
。
IO流使用完毕后必须关闭!
抽象基类 | 字节流 | 字符流 |
---|---|---|
输入流 | InputStream | Reader |
输出流 | OutputStream | Writer |
节点流是从某一个特定的数据源读写数据,如FileReader
、FileWriter
。处理流是包装节点流,可以消除不同节点流的实现差异,以更加方便的方法实现输入输出,使用了修饰器设计模式,不会直接与数据源相连,如BufferedReader
、BufferedWriter
。
1、InputStream
1.1 BufferedInputStream 缓冲字节流
1.2 FileInputStream 文件字节流
构造方法:
- FIleInputStream(File file)
- FIleInputStream(String filePath)
- FIleInputStream(FileDescription fdObj)
方法
int read(byte[] b)
读取一个字节的数据,返回实际读取的字节数。若达到文件末尾,返回-1。如果在其中加入byte[] b
,则一次获取最多b.length
字节的数据到字节数组。 可以把byte
数组转成字符串new String(b, 0, readLen)
1.3 ObjectInputStream 对象字节流
需求
- 将
int num = 100
这个int数据保存到文件中,且能从文件中直接回复int 100 - 将
Dog dog = new Dog("小黄", 3)
这个dog对象保存到文件中,并且能从文件恢复 - 能够将基本数据类型或者对象进行序列化和反序列化操作
2、OutputStream
2.1 FileOutputStream
FileOutputStream(filePath, append)
如果append
是true
而不是false
时,以追加而不是覆盖的方式写入文件。
write(byte[] b, off, len)
会覆盖之前的文件,可以通过string.getBytes()
把字符串转换为字节数组,输出到对应文件。
3 Reader
3.1 FileReader
与FileInputStream
类似,读取单位变为字符。
3.2 BufferedReader
构造
BufferedReader(Reader in)
使用默认的缓冲区大小8192个字符来创建缓冲字符输入流BufferedReader(Reader in, int sz)
指定缓冲区大小
方法
fill()
从底层输入流中填充字符到缓冲区中string = readLine()
读取一行字符串read(c[], off, len)
将最多len个字符读入数组中,返回实际读入的字符个数,督导文件末尾时返回-1
4 Writer
4.1 BufferedWriter
构造
BufferedRWriter(Reader out)
使用默认的缓冲区大小8192个字符来创建缓冲字符输入流BufferedWriter(Readered out, int sz)
指定缓冲区大小
方法
write(char c[], off, len)
write(int c)
write(String s, off, len)
close()
newLine()
写入一个行分隔符flush()
刷新该流的缓冲
4.2 ObjectWriter
三、Properties类
需求
如下一个配置文件mysql.properties
,通过编程获取ip,user,pwd
1 | ip=192.168.0.13 |
方法
load(Reader reader)
加载配置文件的键值对到Properties
对象list(PrintStream out)
将数据显示到指定设备getProperty(key)
根据键获取值setProperty(key, value)
设置键值对到Properties
对象store(Writer writer, String Comments)
将Properties
中的键值对存储到配置文件