IO流-file
IO流
概念
IO流可以看成是不同存储设备(例如磁盘文件,内存等)之间的数据(输入输出操作)流。
文件及File类
文件
计算机文件是以计算机硬盘为载体存储在计算机上的信息集合[二进制数据]
File类
步骤
File对象的创建
思考:将会学习File类中的什么东西?— 主要是方法(功能)开发一个软件(内置一段程序:自动在磁盘上面保存错误信息)在动态的在磁盘上面创建一个文件(文件夹)等。
创建一个File对象:
构造方法:
File(String pathname) pathname 文件的抽象路径名(文件的路径+文件名)
File(String parent, String child) parent + child 就是上面的pathname
File(File parent, String child)
日常开发中第一个最常用
注意: 创建一个File对象并没有在磁盘上面创建一个文件(文件夹) 需要调用File中的特殊的方法。
创建一个具体的文件
boolean createNewFile()
\1. 需要File对象调用:根据File对象中的pathname来创建文件
\2. 如果文件已经存在,返回false
\3. 如果文件路径不存在,抛出IO异常
\4. 此方法只能够创建文件(传统理解的文件,不会创建文件夹)
创建文件夹
boolean mkdir()
\1. 需要File对象调用:根据File对象中的pathname来创建文件夹
\2. 如果文件夹已经存在,返回false
\3. 如果路径不存在,返回false,没有抛出异常
boolean mkdirs()
\1. 如果路径不存在,会自动先创建路径所需的文件夹
删除文件和目录
boolean delete()
\1. 需要File对象来调用(把File对象所关联的文件从磁盘上面删除)
\2. 如果是删除文件夹,必须是空文件夹
\3. 文件就直接删除
基本方法
判断系列方法
boolean isDirectory() 判断是否是一个目录
boolean isFile() 判断是否是一个文件
boolean exists() 测试此抽象路径名表示的文件或目录是否存在
基本的list方法
static File[] listRoots() 列出可用的文件系统根(操作系统上面的盘符)
作用: 先判断电脑上有哪些盘符,然后在制定的位置创建文件夹或者文件
String[] list() 返回当前的文件夹对象下面一层的所有的文件(文件夹)的名字
File[] listFiles() 返回当前的文件夹对象下面一层的所有的文件(文件夹)(File对象的形式
过滤
1.自定义过滤
2.过滤器的接口(FilenameFilter, FileFilter),通过自定义实现过滤器接口来定义过滤器类
String[] list(FilenameFilter filter)
File[] listFiles(FileFilter filter)
File[] listFiles(FilenameFilter filter)
方法递归
/*
* 1.判断文件是否存在:boolean exists()
* 2.判断到底是文件还是文件夹
* 文件 : 直接删除
* 文件夹[a] : 提供的有方法 File[] fil = a.ListFile()
* for(File file:fil){
* deleteAll(file);
* 判断是文件还是文件夹
* 文件:直接删除
* 文件夹:提供方法...
* 文件
* }
* a.delete();*/
public static void main(String[] args) {
File file = new File("D:/pp");
deleteAll(file);
}
public static void deleteAll(File file){
//boolean exists = file.exists();
if (file.exists()) {//判断路径是否存在
if (file.isFile()) {//判断是不是文件
file.delete();
}else if (file.isDirectory()) {//判断是不是文件夹
File[] listFiles = file.listFiles();//是就把文件夹里的目录遍历
for (File file2 : listFiles) {
deleteAll(file2);//进行递归,把里面的进行删除
}
file.delete();//把空文件删除
}
}
}