File类的一个对象可以代表一个文件或文件目录(文件夹),File类中的文件和文件目录路径的抽象表示形式,与平台无关,File能新建,删除,重命名文件和目录,但File不能访问文件内容本身,如果需要访问文件本身内容,则需要输入/输出流,File对象可以作为参数传递给流的构造器。
File类中文件的方法
/**
* 测试File类中文件的方法
*/
@Test
public void test2() {
//指定一个文件的绝对路径
String filePath = "/Applications/file/hello.txt";
File file = new File(filePath);
System.out.println("获取文件的绝对路径:" + file.getAbsolutePath());
System.out.println("获取文件路径:" + file.getPath());
System.out.println("获取文件名:" + file.getName());
//若无,则返回null,当filePath为相对路径时,也返回null
System.out.println("获取上层文件目录路径:" + file.getParent());
//不能获取目录的长度
System.out.println("获取文件长度(即:字节数):" + file.length());
System.out.println("获取文件最近一次修改时间(毫秒数):" + file.lastModified());
}
//运行结果
获取文件的绝对路径:/Applications/file/hello.txt
获取文件路径:/Applications/file/hello.txt
获取文件名:hello.txt
获取上层文件目录路径:/Applications/file
获取文件长度(即:字节数):15
获取文件最近一次修改时间(毫秒数):1650370283000
File类中文件目录的方法
/**
* 测试File类中文件目录的方法
*/
@Test
public void test3() {
//指定一个文件目录
String filePath = "/Applications/file";
File file = new File(filePath);
//获取指定目录下的所有文件名称或者文件目录(文件夹),返回一个字符串数组
String[] list = file.list();
System.out.println("获取指定目录下的所有文件名称或者文件目录(返回数组):" + Arrays.toString(list));
//获取指定目录下的所有文件或者文件目录(文件夹),并且返回一个File数组
File[] files = file.listFiles();
System.out.println("获取指定目录下的所有文件或者文件目录(返回File数组):" + Arrays.toString(files));
}
//运行结果
获取指定目录下的所有文件名称或者文件目录(返回数组):[文件夹2, .DS_Store, test1.txt, areaLinkPub.txt, io1, 文件夹1, hello2.txt, hello1.txt, hello.txt, io2]
获取指定目录下的所有文件或者文件目录(返回File数组):[/Applications/file/文件夹2, /Applications/file/.DS_Store, /Applications/file/test1.txt, /Applications/file/areaLinkPub.txt, /Applications/file/io1, /Applications/file/文件夹1, /Applications/file/hello2.txt, /Applications/file/hello1.txt, /Applications/file/hello.txt, /Applications/file/io2]
/**
* 测试File类中renameTo(File dest)方法:把文件重命名为指定的文件路径
* 注意:以file1.renameTo(file2)为例,
* 要保证返回true,需要file1在硬盘中是存在的,且file2在硬盘中是不存在的
*/
@Test
public void test4() {
//file1在硬盘中是存在的
String filePath1 = "test.txt";
File file1 = new File(filePath1);
//file2在硬盘中是不存在的
String filePath2 = "/Applications/file/test1.txt";
File file2 = new File(filePath2);
//此方法相当于将filePath1的文件迁移到filePath2所指的文件,文件名由自己指定
boolean isOk = file1.renameTo(file2);
System.out.println("重命名文件:" + isOk);
}
//运行结果
重命名文件:true
File类中判断功能的方法
/**
* 测试File类中判断功能的方法
*/
@Test
public void test5() {
String filePath = "hello.txt";
File file = new File(filePath);
System.out.println("是否存在:"+file.exists());
System.out.println("是否是文件目录:"+file.isDirectory());
System.out.println("是否是文件:"+file.isFile());
System.out.println("是否可读:"+file.canRead());
System.out.println("是否可写:"+file.canWrite());
System.out.println("是否隐藏:"+file.isHidden());
}
//运行结果
是否存在:true
是否是文件目录:false
是否是文件:true
是否可读:true
是否可写:true
是否隐藏:false
File类中创建文件的方法
/**
* 测试File类中创建文件的方法
*/
@Test
public void test6() throws Exception{
/**********文件的创建**********/
//需要创建的文件相对路径
String filePath = "test.txt";
File file = new File(filePath);
if (!file.exists()) {
System.out.println("文件不存在,创建此文件");
//创建文件的方法,文件存在,则不创建,返回false
boolean newFile = file.createNewFile();
if (newFile) {
System.out.println("文件创建成功");
} else {
System.out.println("文件创建失败");
}
} else {
System.out.println("文件已经存在");
//删除文件时,文件目录下不能有子目录或文件
boolean delete = file.delete();
if (delete) {
System.out.println("文件删除成功");
} else {
System.out.println("文件删除失败");
}
}
}
//运行结果
文件不存在,创建此文件
文件创建成功
File类中创建文件目录的方法
/**
* 测试File类中创建文件目录的方法
*/
@Test
public void test7() {
/**********文件目录的创建**********/
//需要创建的文件夹的路径
String filePath = "/Applications/file/io1";
File file = new File(filePath);
//创建文件夹。如果此文件夹已存在,则不创建,如果此文件夹的上级目录(file)不存在,也不创建。
boolean mkdir = file.mkdir();
if (mkdir) {
System.out.println("文件夹io1创建成功");
} else {
if (file.exists()) {
System.out.println("文件夹io1已经存在");
} else {
System.out.println("文件夹io1不存在");
}
}
//需要创建的文件夹的路径
String filePath1 = "/Applications/file/io2/io3";
File file1 = new File(filePath1);
//如果此文件夹的上级目录(io2)不存在,也不创建。
boolean mkdir1 = file1.mkdir();
if (mkdir1) {
System.out.println("文件夹io3创建成功");
} else {
if (!file1.exists()) {
System.out.println("文件夹io3创建失败");
File file2 = new File("/Applications/file/io2");
if (!file2.exists()) {
System.out.println("文件夹io3的上级目录io2不存在");
} else {
System.out.println("文件夹io3的上级目录io2存在");
}
} else {
System.out.println("文件夹io3创建失败");
}
}
String filePath2 = "/Applications/file/io2/io3";
File file2 = new File(filePath2);
//创建文件夹,如果上级目录不存在,一并创建
boolean mkdir2 = file2.mkdirs();
if (mkdir2) {
System.out.println("文件夹io3创建成功");
} else {
System.out.println("文件夹io3已存在");
}
}
//运行结果
文件夹io1创建成功
文件夹io3创建失败
文件夹io3的上级目录io2不存在
文件夹io3创建成功