File类代表一个特定的文件或者目录,并提供了若干方法对该文件或目录进行操作。
- File类构造方法:
通过路径名创建一个新 File 实例
根据父目录路径File实例和子目录或文件路径创建一个新 File 实例
根据父目录路径和子目录或文件路径创建一个新 File 实例
示例:
public class Test {
public static void main(String[] args) {
File file = new File("C:\\Program_Files\\apache-maven-3.5.0");
System.out.println(file.getPath());
file =new File(file,"bin");
System.out.println(file.getPath());
file=new File("C:\\Program_Files\\apache-maven-3.5.0","bin");
System.out.println(file.getPath());
}
}
结果如下:
- File类常用方法:
1、判断是否是路径:.isDirectory()
2、判断是否为文件:.isFile()
3、获取名字:.getName()
public class Test {
public static void main(String[] args) {
File file = new File("C:\\Program_Files\\apache-maven-3.5.0");
//判断是否是路径。
if(file.isDirectory()) {
System.out.println(file.getPath()+"是路径");
}else {
System.out.println(file.getPath()+"不是路径");
}
//判断是否为文件
if(file.isFile()) {
System.out.println(file.getPath()+"是文件");
}else {
System.out.println(file.getPath()+"不是文件");
}
//获取名字
System.out.println("路径名:"+file.getName());
结果:
4、创建文件夹。.mkdir()/.mkdirs()。mkdir只能创建一级目录。mkdirs能创建多级目录。
5、创建文件。.createNewFile()
public class Test {
public static void main(String[] args) {
//创建文件夹。mkdir只能创建一级目录。
File file=new File("C:\\a\\b\\c");
if(file.mkdirs()) {
System.out.println(file.getPath()+"创建成功");
}else {
System.out.println(file.getPath()+"创建失败");
}
//创建文件。
file=new File("C:\\a\\b\\c\\说明.txt");
try {
if(file.createNewFile()) {
System.out.println(file.getPath()+"创建成功");
}else {
System.out.println(file.getPath()+"创建失败");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
结果如下:
6、删除文件夹或文件。.delete()
7、重命名。.renameTo(New file())
8、文件夹和文件是否存在。.exists()
public class Test {
public static void main(String[] args) {
//删除文件夹,只删除最后一级且该目录必须为空才能删除。
//如果该对象表示一个文件,就删除文件。
File file=new File("C:\\a\\b\\c\\说明.txt");
if(file.delete()) {
System.out.println(file.getPath()+"删除成功");
}else {
System.out.println(file.getPath()+"删除失败");
}
//重命名
file=new File("C:\\a\\b\\c");
if(file.renameTo(new File("C:\\a\\b\\ccccc"))){
System.out.println(file.getPath()+"修改成功");
}else {
System.out.println(file.getPath()+"修改失败");
}
//文件夹和文件是否存在
file=new File("C:\\a\\b\\ccccc");
if(file.exists()){
System.out.println(file.getPath()+"存在");
}else {
System.out.println(file.getPath()+"不存在");
}
}
}
结果:
9、获取父级路径。.getParent()
10、获取当前目录。.getPath()
11、获取父级路劲对应file对象。.getParentFile()
12、获取文件夹所有子文件名字构成的数组。.list()
13、获取文件夹所有子文件名字的File对象构成的数组。.listFiles()
public class Test {
public static void main(String[] args) {
//获取父级路径。
File file=new File("C:\\a\\b\\ccccc");
System.out.println("父级路径:"+file.getParent());
//获取当前目录
System.out.println("当前目录:"+file.getPath());
//获取父级路劲对应file对象
System.out.println("父级路劲对应file对象的路径:"+file.getParentFile().getPath());
//获取文件夹所有子文件名字构成的数组
String [] names=file.list();
for (String name : names) {
System.out.println("文件夹子文件名字:"+name);
}
//获取文件夹所有子文件名字的File对象构成的数组
File [] files=file.listFiles();
for (File f : files) {
System.out.println("文件夹子文件路径;"+f.getPath());
}
}
}
结果:
14、file.separator
单斜和双斜是一样用的,但是Linux不支持双斜,所以我们为了增加兼容性,会使用separtor进行拼接路径。
public class Test {
public static void main(String[] args) {
//双斜
File file=new File("C:\\a\\b\\ccccc");
System.out.println(file.getPath());
//单斜
file=new File("C:/a/b/ccccc");
System.out.println(file.getPath());
//file.separator
file=new File("C:"+file.separator+"a"+file.separator+"b"+file.separator+"ccccc");
System.out.println(file.getPath());
}
}
结果:单斜双斜以及sparator输出结果是一样的。