java.io.File
类是用来表示文件或者文件夹路径,
可以用于对文件和文件夹的创建、查找和删除等操作。
1.File类的构造方法
//- `public File(String pathname) ` :通过将给定的**路径名字符串**转换为抽象路径名来创建新的 File实例。
//- `public File(String parent, String child) ` :从**父路径名字符串和子路径名字符串**创建新的 File实例。
//- `public File(File parent, String child)` :从**父抽象路径名和子路径名字符串**创建新的 File实例。
//- 注意: 创建File对象时,如果传入的文件或者文件夹路径不存在,依然不影响File对象的创建
package com.jcli;
import java.io.File;
public class Test01 {
/**
* File类的构造方法
* @param args
*/
public static void main(String[] args) {
//- `public File(String pathname) ` :通过将给定的**路径名字符串**转换为抽象路径名来创建新的 File实例。
File f1 = new File("D:\\file\\aaa\\5.jpg");
File f2 = new File("D:\\file\\aaa");
System.out.println("f1:" + f1);
System.out.println("f2:" + f2);
//- `public File(String parent, String child) ` :从**父路径名字符串和子路径名字符串**创建新的 File实例。
File f3 = new File("D:\\file\\aaa\\","1.txt");
System.out.println("f3:" + f3);
//- `public File(File parent, String child)` :从**父抽象路径名和子路径名字符串**创建新的 File实例。
File f4 = new File(f2,"1.txt");
System.out.println("f4:" + f4);
//- 注意: 创建File对象时,如果传入的文件或者文件夹路径不存在,依然不影响File对象的创建
File f5 = new File("D:\\file\\aaa\\b.txt");
System.out.println("f5:"+f5);
}
}
File类常用方法
2.绝对路径和相对路径
package com.jcli;
import java.io.File;
public class Test02 {
/**
* 绝对路径和相对路径
* @param args
*/
public static void main(String[] args) {
// 创建一个File对象表示aaa\a.txt文件的路径
// 绝对路径
File f1 = new File("D:\\file\\aaa\\5.jpg");
// 相对路径
File f2 = new File("aaa\\5.jpg");
}
}
3.获取功能的方法
//- `public String getAbsolutePath() ` :返回此File的绝对路径名字符串。 //- ` public String getPath() ` :将此File转换为路径名字符串。 **构造路径** //- `public String getName()` :返回由此File表示的文件或目录的名称。 //- `public long length()` :返回由此File表示的文件的长度。 **不能获取目录的长度。**
package com.jcli;
import java.io.File;
/**
* 获取功能的方法
*/
public class Test03 {
public static void main(String[] args) {
// 创建File对象
File f1 = new File("D:\\file\\aaa\\5.jpg");
File f2 = new File("aaa\\5.jpg");
//- `public String getAbsolutePath() ` :返回此File的绝对路径名字符串。
System.out.println("f1表示的文件的绝对路径:"+f1.getAbsolutePath());
System.out.println("f2表示的文件的绝对路径:"+f2.getAbsolutePath());
//- ` public String getPath() ` :将此File转换为路径名字符串。 **构造路径**
System.out.println("f1的构造路径:"+f1.getPath());
System.out.println("f2的构造路径:"+f2.getPath());
// 创建一个File对象,表示文件路径
File f3 = new File("file\\aaa\\a.txt");
// 创建一个File对象,表示文件夹路径
File f4 = new File("file\\aaa");
//- `public String getName()` :返回由此File表示的文件或目录的名称。
System.out.println("f3表示的文件的名称:"+f3.getName());
System.out.println("f4表示的文件夹的名称:"+f4.getName());
//- `public long length()` :返回由此File表示的文件的长度。 **不能获取目录的长度。**
System.out.println("f3表示的文件的字节大小:"+f1.length());// 183182
System.out.println("f4表示的文件夹的字节大小:"+f4.length());// 0,不能获取文件夹的字节大小
}
}
怎么指向了不存在路径?
4.判断功能的方法
//- public boolean exists() :此File表示的文件或目录是否实际存在。
//- public boolean isDirectory() :此File表示的是否为目录。
//- public boolean isFile() :此File表示的是否为文件。
// 注意: 如果File对象表示的路径不存在,以上三个方法的返回值都是false
package com.jcli;
import java.io.File;
/**
*判断功能的方法
*/
public class Test04 {
public static void main(String[] args) {
// 创建一个File对象,表示文件的路径
File f1 = new File("D:\\file\\aaa\\5.jpg");
// 创建一个File对象,表示文件夹的路径
File f2 = new File("D:\\file\\aaa");
// 创建一个File对象,表示不存在的路径
File f3 = new File("D:\\file\\abc");
//- public boolean exists() :此File表示的文件或目录是否实际存在。
System.out.println("f1表示的文件是否真实存在:"+f1.exists()); // true
System.out.println("f2表示的文件夹是否真实存在:"+f2.exists());// true
System.out.println("f3表示的路径是否真实存在:"+f3.exists());// false
System.out.println("-----------------");
//- public boolean isDirectory() :此File表示的是否为目录。
System.out.println("f1是否是一个文件夹:"+f1.isDirectory());// false
System.out.println("f2是否是一个文件夹:"+f2.isDirectory());// true
System.out.println("f3是否是一个文件夹:"+f3.isDirectory());// false
System.out.println("-----------------");
//- public boolean isFile() :此File表示的是否为文件。
System.out.println("f1是否是一个文件:"+f1.isFile());// true
System.out.println("f2是否是一个文件:"+f2.isFile());// false
System.out.println("f3是否是一个文件:"+f3.isFile());// false
// 注意: 如果File对象表示的路径不存在,以上三个方法的返回值都是false
}
}
5.创建删除功能的方法
public boolean createNewFile()
:当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
public boolean delete()
: 删除文件,或者删除空文件夹, 不能删除非空文件夹
public boolean mkdir()
:创建由此File表示的目录。
public boolean mkdirs()
:创建由此File表示的目录,包括任何必需但不存在的父目录。
package com.jcli;
import java.io.File;
import java.io.IOException;
public class Test05 {
public static void main(String[] args) throws IOException {
//public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
// 创建一个File对象,表示文件路径--->真实存在
File f1 = new File("D:\\file\\aaa\\5.jpg");
// 创建一个File对象,表示文件路径--->不真实存在
File f2 = new File("D:\\file\\aaa\\2.jpg");
//File f2 = new File("D:\\file\\aaa\\bbb");
// 创建f1表示的文件
boolean res1 = f1.createNewFile();
// 创建f2表示的文件
boolean res2 = f2.createNewFile();
System.out.println("res1:" + res1);// res1:false
System.out.println("res2:" + res2);// res2:true
System.out.println("------------------------");
//public boolean delete() : 删除文件,或者删除空文件夹, 不能删除非空文件夹
// 创建一个File对象,表示文件路径
File f3 = new File("file\\aaa\\1.jpg");
// 创建一个File对象,表示文件夹路径
File f4 = new File("file\\aaa");
// 创建一个File对象,表示文件夹路径
//File f5 = new File("D:\\file\\aaa\\bbb");
File f5 = new File("file\\aaa\\bbb");
System.out.println(f3.delete());// true
System.out.println(f4.delete());// false
System.out.println(f5.delete());// true
System.out.println("------------------------");
//public boolean mkdir() :创建由此File表示的目录。
// 创建一个File对象,file\\aaa\\ccc
File f6 = new File("D:\\file\\aaa\\ccc");
//File f6 = new File("file\\aaa\\ccc");
System.out.println(f6.mkdir());
// 创建一个File对象,file\\aaa\\ccc\\ddd\\eee\\fff
File f7 = new File("D:\\file\\aaa\\ccc\\ddd\\eee\\fff");
//File f7 = new File("file\\aaa\\ccc\\ddd\\eee\\fff");
//System.out.println(f7.mkdir());// 创建不出fff文件夹
//public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。
System.out.println(f7.mkdirs());// 创建出fff文件夹
}
}
6.遍历目录方法
public String[] list()
:获取File目录中的所有子文件或子目录的名称。
public File[] listFiles()
:获取File目录中的所有子文件或子目录的路径。
注意: 循环遍历返回的数组之前,建议做非空判断,避免空指针异常
package com.jcli;
import java.io.File;
public class Test06 {
public static void main(String[] args) {
// 创建一个File对象,file\\aaa文件夹
File f1 = new File("D:\\file\\aaa");
//File f1 = new File("file\\aaa");
//public String[] list() :获取File目录中的所有子文件或子目录的名称。
String[] arr1 = f1.list();
for (String s : arr1) {
System.out.println("s:" + s);
}
System.out.println("-------------------");
//public File[] listFiles() :获取File目录中的所有子文件或子目录的路径。
File[] arr2 = f1.listFiles();
for (File file : arr2) {
System.out.println("file:" + file);
}
System.out.println("-------------------");
//注意: 循环遍历返回的数组之前,建议做非空判断,避免空指针异常
File f2 = new File("D:\\file\\bbb");
File[] arr3 = f2.listFiles();
// 报空指针异常
if (arr3 != null) {
for (File file1 : arr3) {
System.out.println("file1:" + file1);
}
}
}
}
问题
相对路径的增删查为什么没有绝对路径的效果好?