文件:文件名称+后缀名【单个】
Windows操作系统是不区分大小写的,所以小写文件名和大写文件名只能存储一个,如何文件名和文件夹名重名也只能存储一个
父路径(如:aa.txt角度,父路径是D:\hh)
子路径(如:aa.txt角度,就是自己)
绝对路径:如,C、D、E、F盘等等
相对路径:如果采用相对路径,它创建的文件或者文件夹放到当前项目的根目录下面
根目录:如当前项目的目录是hh,hh则是根目录,即相对路径创建的文件或目录默认放到当前项目的根目录下,文件或者文件夹就跟a.txt平级
Java一切皆对象思想,这里把文件和文件夹也封装成一个类【统一是File类】
File类
在java.io 包下
字段摘要
构造方法摘要【常用】
File(File parent, String child)
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例【根据父路径和子路径创建File对象】
public class FileDemo {
public static void main(String[] args) {
/**
* D:\hh 这样式需要转义 D:\\hh
* D:\hh 这样式可以改为正斜杠 D:/hh
* 效果一样
*/
File file = new File(new File("D:/hh"),"a.txt");
//File重写了toString
System.out.println(file);//D:\hh\a.txt
}
}
File(String pathname)
通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例【根据指定路径创建File对象】
public class FileDemo {
public static void main(String[] args) {
/**
* D:\hh 这样式需要转义 D:\\hh
* D:\hh 这样式可以改为正斜杠 D:/hh
* 效果一样
*/
File file = new File("D:\\hh\\a.txt");
//File重写了toString
System.out.println(file);//D:\hh\a.txt
}
}
File(String parent, String child)
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例 【根据父路径和子路径创建File对象】
public class FileDemo {
public static void main(String[] args) {
/**
* D:\hh 这样式需要转义 D:\\hh
* D:\hh 这样式可以改为正斜杠 D:/hh
* 效果一样
*/
File file = new File("D:/hh","a.txt");//前面是文件夹路径,后面是文件名
//File重写了toString
System.out.println(file);//D:\hh\a.txt
}
}
结:以上构造方法在创建File对象的时候,它只会在内存中创建文件对象,不会加载到磁盘上
方法摘要
boolean createNewFile()
当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件
创建文件【父路径必须存在,不存在则运行报错】
public class FileDemo {
public static void main(String[] args) throws IOException {
File file = new File("D:/hh/a.txt");
//创建文件(如果父路径不存在,底层会抛出异常),创建的文件不存在则创建,有则false
boolean newFile = file.createNewFile();
System.out.println(newFile);//true
}
}
父路径必须存在,不存在则找不到路径会运行报错【就行父路径根本没有创建有】
默认添加文件,会添加到项目里面【也就是如下,采用了相对路径,它创建的文件或者文件夹会放到当前项目的根目录下面】
boolean mkdirs()
创建此抽象路径名指定的目录,包括所有必需但不存在的父目录
专门是创建文件夹的【不会创建文件】
public class FileDemo {
public static void main(String[] args) throws IOException {
File file = new File("D:/xx/xx/hh/a.txt");
//只会创建多层文件夹不会创建文件,不要看名字,mkdirs加了s是多层创建,不加s则是只创建一层
boolean mkdirs = file.mkdirs();
System.out.println(mkdirs);//true
}
}
这多层路径文件夹都是用mkdirs方法创建的
boolean delete()
删除此抽象路径名表示的文件或目录
删除文件或者目录【前提:该目录一定是一个空目录】
public class FileDemo {
public static void main(String[] args) throws IOException {
File file = new File("D:/xx/xx/hh/a.txt");
//注意:只能从最后一层往前删除文件或这文件夹,否则会返回false
boolean delete = file.delete();
System.out.println(delete);//true
}
}
这里是删除的文件夹,因为最后一层本就是文件夹
手动创建一个文件放到hh路径下,再执行上面的代码,就会删除如下文件【文件有内容也会被删除】
boolean exists()
测试此抽象路径名表示的文件或目录是否存在
判断文件或者文件夹是否存在
public class FileDemo {
public static void main(String[] args) throws IOException {
File file = new File("D:/xx/xx/hh");
//判断文件或者文件夹是否存在
boolean exists = file.exists();
System.out.println(exists);//true
}
}
判断文件夹是否存在,D:/xx/xx/hh中的hh文件夹存在,所以返回true
判断文件是否存在
String getPath()
将此抽象路径名转换为一个路径名字符串
获取路径【就是返回构造方法中传递的路径】
获取相对路径
public class FileDemo {
public static void main(String[] args) throws IOException {
File file = new File("a.txt");
String path = file.getPath();
System.o