1.概述
package com.yl.pdfdemo.day08.p4;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
/**
* @Author wfj
* @Date 2021/6/28
* @Description File的使用
* @Version 1.0
*/
public class FileTest {
/**
* 1.File类的对象,代表一个文件或者一个文件目录
* 2.File声明在java.io下
* 如何创建File类的实例
* File(String filePath)
* File(String parentPath,String childrenPath)
* File(File parentFile,String childPath)
*
* 2.
* 相对路径:相较于某个路径下,指明的路径
* 绝对路径:包含盘符在内的文件或者文件目录的路径
*
* 3.路径分隔符
* Windows: \\
* unix: /
*/
@Test
public void test() {
//构造器1
File file1 = new File("timi.txt");
File file2 = new File("D:\\jdbc.properties");
System.out.println(file1);//timi.txt
System.out.println(file2);//D:\jdbc.properties
//构造器2
File file3 = new File("D:\\wechat","Tencent");
System.out.println(file3);//D:\wechat\Tencent
//构造器3
File file4 = new File(file3,"keke.txt");
System.out.println(file4);//D:\wechat\Tencent\keke.txt
}
@Test
public void test2() {
File file1 = new File("qq.txt");
File file2 = new File("D:\\wechat\\ha.txt");
//String getAbsolutePath():获取绝对路径
System.out.println(file1.getAbsoluteFile());//D:\StudyProject\pdfdemo\qq.txt
System.out.println(file2.getAbsolutePath());//D:\wechat\ha.txt
//String getPath(): 获取路径
System.out.println(file1.getPath());//qq.txt
System.out.println(file2.getPath());//D:\wechat\ha.txt
//String getName(): 获取名称
System.out.println(file1.getName());//qq.txt
System.out.println(file2.getName());//ha.txt
//String getParent(): 获取上层文件目录路径,若无,则返回null
System.out.println(file1.getParent());//null
System.out.println(file2.getParent());//D:\wechat
//Long Length(): 获取文件长度,即字节数,不能获取目录的长度
System.out.println(file1.length());//0
System.out.println(file2.length());//0
//lastModified(): 获取最后一次修改时间
System.out.println(file1.lastModified());//0
System.out.println(file2.lastModified());//0
//String[] list(): 获取指定目录下的所有文件或者文件目录的名称数组
//File[] listFiles(): 获取指定目录下所有文件或者文件目录的File数组
File file3 = new File("D:\\test\\test1");
String[] list = file3.list();
for (String s : list) {
System.out.println(s);
/**
* aa.txt
* b.doc
* bb.txt
*/
}
File[] files = file3.listFiles();
for (File file : files) {
System.out.println(file);
/**
* D:\test\test1\aa.txt
* D:\test\test1\b.doc
* D:\test\test1\bb.txt
*/
}
//boolean renameTo(File dest) : 把文件重命名为指定文件
//假设file1.renameTo(file2),要想返回true,file1得在硬盘中存在,file2在硬盘中不存在,相当把文件移动到指定的目录
File file4 = new File("D:\\test\\test1\\aa.txt");
File file5 = new File("D:\\qq\\a.txt");
boolean b = file4.renameTo(file5);
System.out.println(b);//true
}
@Test
public void test3() throws IOException {
File file1 = new File("D:\\test\\test1\\bb.txt");
//boolean isDirectory() 是否是文件目录
System.out.println(file1.isDirectory());//false
//boolean isFile() 是否是文件
System.out.println(file1.isFile());//true
//boolean exists() 是否存在
System.out.println(file1.exists());//true
//boolean canRead() 是否可读
System.out.println(file1.canRead());//true
//boolean canWrite() 是否可写
System.out.println(file1.canWrite());//true
//boolean isHidden() 是否隐藏
System.out.println(file1.isHidden());//false
//创建文件或者目录
//boolean createNewFile() :创建文件,若文件存在,则不创建,返回false
//boolean delete() : 删除文件或者文件夹,注意:java的删除不走垃圾回收站
File file3 = new File("D:yl.txt");
if (!file3.exists()) {
System.out.println(file3.createNewFile());//true
} else {
file3.delete();
System.out.println("delete");
}
//boolean mkdir(): 创建文件目录,如果此文件目录存在,则不创建,如果此文件的上层目录不存在,也不创建
//boolean mkdirs(): 创建文件目录,如果上层目录不存在,也一并创建
//本地里只有这个路径真实存在D:\test\test1
File file4 = new File("D:\\test\\test1\\test2\\test3");
boolean mkdir = file4.mkdir();
if (mkdir) {
System.out.println("mkdir success");
}
File file5 = new File("D:\\test\\test1\\test2\\test4");
boolean mkdirs = file5.mkdirs();
if (mkdirs) {
System.out.println("mkdirs suceess");//mkdir success
}
}
}
2.练习
package com.yl.pdfdemo.day08.p4;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
/**
* @Author wfj
* @Date 2021/6/28
* @Description File练习
* @Version 1.0
*/
public class FileTest1 {
@Test
public void test() throws IOException {
//在指定目录下,创建文件
File file = new File("D:\\test\\test1\\bb.txt");
File file1 = new File(file.getParent(),"ha.txt");
if (!file1.exists()) {
file1.createNewFile();
System.out.println(file1);
}
//判断指定目录下是否包含以.jpg结尾的文件,有的话直接输出文件名
File file2 = new File("D:\\test\\test1");
String[] list = file2.list();
for (int i = 0; i < list.length; i++) {
if (list[i].endsWith(".jpg")) {
System.out.println(list[i]);
}
}
//打印指定目录下的所有文件以及子目录的所有文件,使用递归
File file3 = new File("D:\\test\\test1");
printFile(file3);
//删除目录,注意:要想删除目录成功,得保证要删除的目录下没有文件或者目录
File file4 = new File("D:\\test\\test1\\test2");
deleteFile(file4);
}
private void printFile(File file) {
File[] files = file.listFiles();
for (int i = 0; i <files.length; i++) {
if (files[i].isFile()) {
System.out.println(files[i]);
} else {
printFile(files[i]);
}
}
}
private void deleteFile(File file) {
//先删除所有子目录以及文件
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File f : files) {
deleteFile(f);
}
}
file.delete();
}
}