常用方法:
package com.example.test;
import org.junit.jupiter.api.Test;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
public class TestFile {
@Test
public void testFile1(){
System.out.println(Arrays.toString(File.listRoots()));
String filePath1="D:\\testFile";
File f1 = new File(filePath1);
String filePath2="D:\\testFile\\aaa.txt";
File f2 = new File(filePath2);
String filePath3="dao\\TestCustomerDao.java";
File f3 = new File(filePath3);
System.out.println(f1.exists());
System.out.println(f1.isFile());
System.out.println(f1.isDirectory());
//file.length这个方法只能用于获取文件的大小,无法获取文件夹的大小 (单位:字节)
System.out.println("文件夹大小:"+f1.length());
System.out.println("文件大小:"+f2.length());
/*
getPath:返回new file(??)里面的路径
getAbsolutePath:返回绝对路径
*/
System.out.println("文件定义时使用的路径:"+f3.getPath());
System.out.println("返回绝对路径:"+f3.getAbsolutePath());
System.out.println("返回文件名(带后缀):"+f3.getName());
System.out.println("最后一次修改:"+new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date(f2.lastModified())));
}
@Test
public void testFile2() throws IOException {
/*
createNewFile 没办法顺带创建文件夹(父级路径不存在报IOException)
mkdir 创建单级文件夹
mkdirs 创建多级文件夹
delete 删除文件或空文件夹
*/
String filePath="D:\\testFile\\vv.txt";
File f1 = new File(filePath);
System.out.println(f1.createNewFile());
File f2 = new File("D:\\testFile\\ddd");
System.out.println(f2.mkdir());
File f3 = new File("D:\\testFile\\eee\\aa\\a.txt");//创了一个名为a.txt的文件夹 😂
System.out.println(f3.mkdirs());
f3.delete();//删除了名为a.txt的文件夹
}
@Test
public void testFile3(){
/*
listFiles方法
当调用者File表示的路径:
不存在时 返回null
是文件时 返回null
是空文件夹 返回长度为0的数组
是有内容的文件夹时 返回当级文件夹里面所有的文件和文件夹
是有隐藏文件的文件夹时 返回当级文件夹里面所有的文件和文件夹,包括隐藏文件
是需要权限的文件夹时 返回null
*/
File f1 = new File("D:\\testFile");
File[] files = f1.listFiles();
for (File file : files) {
System.out.println(file);
}
}
@Test
public void testFile4() {
File file = new File("C:\\Users\\chen\\Desktop\\反射.xmind");
long l = file.lastModified();
Date date = new Date(l);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = sdf.format(date);
System.out.println(dateString);
}
}
常用方法练习:
得到一个文件夹内所有的txt文件的文件名
package com.example.testFile;
import java.io.File;
import java.util.ArrayList;
public class demo01 {
//得到一个文件夹内所有的txt文件的文件名
public static ArrayList<String> getAllTxt(String path){
ArrayList<String> fileList = new ArrayList<>();
File file = new File(path);
File[] files = file.listFiles();
for (File f : files) {
if (f.isFile()&&f.getName().endsWith(".txt")){
fileList.add(f.getName());
}
else {
ArrayList<String> sonList = getAllTxt(f.getAbsolutePath());
fileList.addAll(sonList);
}
}
return fileList;
}
public static void main(String[] args) {
ArrayList<String> allTxt = demo01.getAllTxt("D:\\testFile");
System.out.println(allTxt);
}
}
删除多级文件夹(包括它本身和它里面的所有内容)
package com.example.testFile;
import java.io.File;
public class demo02 {
public static void deleteSrc(File src){
//删除多级文件夹(包括它本身和它里面的所有内容)
//delete只能删除文件和空文件夹
File[] files = src.listFiles();
for (File file : files) {
if (file.isFile()){
file.delete();
}
else {
deleteSrc(file);
}
}
src.delete();//最后删除自己
}
public static void main(String[] args) {
demo02.deleteSrc(new File("D:\\testFile\\eee"));
}
}
返回文件夹的大小
package com.example.testFile;
import java.io.File;
public class demo03 {
public static long getLength(File path){
//返回文件夹的大小
long len=0;
File[] files = path.listFiles();
for (File file : files) {
if (file.isFile()){
len=len+file.length();
}
else {
len=len+getLength(file);
}
}
return len;
}
public static void main(String[] args) {
long length = demo03.getLength(new File("D:\\testFile\\bbb"));
System.out.println(length);
}
}
分类统计一个文件夹内不同拓展名的文件的数量
package com.example.testFile;
import java.io.File;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class demo04 {
static HashMap<String, Integer> map = new HashMap<>();
//分类统计一个文件夹内不同拓展名的文件的数量
public static Map<String,Integer> classifySrc(File src){
File[] files = src.listFiles();
for (File file : files) {
if (file.isFile()){
String[] split = file.getName().split("\\."); //需要转义
String fileType=split[split.length-1];
if(map.containsKey(fileType)){
map.put(fileType,map.get(fileType)+1);
}
else {
map.put(fileType,1);
}
}
else {
classifySrc(file);
}
}
return map;
}
public static void main(String[] args) {
Map<String, Integer> map = demo04.classifySrc(new File("D:\\rabbitMQ"));
map.forEach((k,v)->{
System.out.println(k+":"+v);
});
}
}