一、了解File类
File是java.io包下面的一个类,它主要是用来表示一个文件,可以使普通文件也可以是一个文件夹。下面是它的构造方法:
下面在介绍一些它的常用方法:
getName() 返回file对象的文件名,String类型
getParent() 返回对象的父目录的文件路径
getPath() 返回对象的文件路径
getAbsolutePath() 返回对象的绝对路径
exists() 判断文件是否存在
isDirectory() 判断对象是否时一个目录文件
isFile() 判断对象是否是一个普通文件
createNewFile() 根据file对象,创建一个文件,成功返回true
delete() 删除file对象,成功返回true
list() 返回file对象代表的目录下的所有文件名
listFiles() 返回file对象代表的目录下的所有文件
mkdir() 创建file对象代表的目录文件
二、IO操作
文件的读写主要分为字节流和字符流,下面我们主要讲字节流的读写。
1.字节流输入 InputStream
顾名思义,字节流读取就是每次只读取一个字节,用InputStream实现。但是InputStream是一个抽象类,是无法实例化的,所以我们需要通过FileInputStream来向上转型实例化一个输入流对象。
InputStream in = new FileInputStream("test.txt");
这个代码就是实例化了一个字节流输入的对象,实例化的过程就已经打开了test.txt这个文件,可以用它来实现对文件的读写,同时需要注意一点,在我们打开文件之后是一点要关闭文件的,使用.close方法进行关闭。
读取文件的方法:
read() 一次读取一个字节数据,返回值为int类型,如果返回-1说明文件已经读取完毕
read(byte[] b) 读取最多b.length个字节的数据到b中
read(byte[] b,int off,int len) 最多读取len个字节的数据到b中,从off位置开始读取。
2.字节流输出 OutputStream
OutputStream和InputStream一样都是字节流,不过一个是读,一个是写。OutputStream也是一个抽象类,需要用FileOutputStream来实例化对象,同时要注意的是在使用它写文件时,文件一旦打开成功,就会把文件的原有内容清空,然后再写入数据,同时打开文件后也是需要使用close方法来关闭的。
OutputStream out = new FileOutputStream("test.txt");
它的写方法是用write来实现,同样是包含三个版本的
write(byte[] b) 把字节数组b的所有内容都写到文件中
write(int b) 把字节b写入到文件中
write(byte[] b,int off,int len) 从字节数组写入len个字节到文件中,从偏移位置off开始输出
在我们写代码时可能会忘记关闭文件,那么就可能会导致一些比较严重的后果,为了防止这种情况发生,所以还有下面的一种写法
try (InputStream inputStream = new FileInputStream(srcFile);
OutputStream outputStream = new FileOutputStream(destFile)){
} catch (IOException e) {
e.printStackTrace();
}
把输入输出流的实例化放在try当中,当这段代码结束后,文件就会被关闭