第一章 File类的概述
java.io.File类: 用来描述计算机中 文件/文件夹 的路径。
第二章 File类的方法
2.1 File类的构造方法
File(String pathname)
File(String parent, String child)
File(File parent, String child)
2.2 File类的静态成员变量
public static String pathSeparator: 系统中多个路径的分隔符
public static String separator: 系统中一个路径中多个名称之间的分隔符号
2.3 File类的获取方法
public String getAbsolutePath() 返回此File的绝对路径名字符串。
public String getPath() 返回构造方法中的字符串路径
public String getName() 返回此File表示的文件或文件夹的名称。
public long length() 返回由此File表示的文件的长度。
public File getParent() 返回此File的父目录
public File getParentFile() 返回此File的父目录File对象
public long getFreeSpace() 返回该分区上 空闲空间 long 字节
public long getUsableSpace() 返回该分区上 空闲空间 long 字节 ,会检查写等权限,更准确
public long getTotalSpace() 返回该分区上的总空间
package com.alibaba.file_test;
import java.io.File;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
File file = new File("D:\\Project\\JavaAdvenced\\day12_review\\src\\com\\alibaba\\file_test\\a.txt");
System.out.println(File.separator);
System.out.println(File.pathSeparator);
System.out.println(file.getAbsolutePath());
System.out.println(file.getName());
System.out.println(new File("abc").getPath());
System.out.println(file.getParent());
File parentFile = file.getParentFile();
System.out.println(file.getCanonicalPath());
file = new File("d:");
System.out.println(file.getFreeSpace());
System.out.println(file.getUsableSpace());
System.out.println(file.getTotalSpace());
}
}
2.4 File类的判断方法
public boolean exists() :
public boolean isDirectory() :此File表示的是否为目录。
public boolean isFile() :此File表示的是否为文件。
package com.alibaba.file_test;
import java.io.File;
public class EstimateMethodTest {
public static void main(String[] args) {
File file = new File("");
boolean exists = file.exists();
boolean directory = file.isDirectory();
boolean file1 = file.isFile();
}
}
2.5 File类的创建删除方法
public boolean createNewFile() 该名称的文件不存在时,才会创建一个新的空文件。
public boolean mkdir() : 创建由此File表示的目录。
public boolean mkdirs() : 创建由此File表示的目录,创建多级文件夹
public boolean delete() : 只能删除掉文件和空文件夹,java中删除动作不走回收站。
2.6 File类的遍历方法
public String[] list() 获取当前目录下的所有的目录和文件的字符串数组
public File[] listFiles() 获取当前目录下的所有的目录和文件的File对象数组
第三章 文件显示、统计、复制、删除、剪切 练习
3.1 显示文件及文件夹内容
![在这里插入图片描述](https://img-blog.csdnimg.cn/eb92c18381024c5f891c1b638de2820f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LuO6Zu25byA5aeL55qESkFWQeS4lueVjA==,size_20,color_FFFFFF,t_70,g_se,x_16)
public static void showDir(File srcDir,int count) {
System.out.println("|-" + srcDir.getName());
File[] files = srcDir.listFiles();
count++;
for (File file : files) {
System.out.print(printTab(count));
if (file.isFile()) {
System.out.println("|-" + file.getName());
} else {
showDir(file,count);
}
}
}
3.2 统计文件夹大小
![在这里插入图片描述](https://img-blog.csdnimg.cn/f05ef130ecfe412cb94584c70fd74a0b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LuO6Zu25byA5aeL55qESkFWQeS4lueVjA==,size_20,color_FFFFFF,t_70,g_se,x_16)
public static long calculateDirSize(File srcDir) {
long size = 0;
File[] files = srcDir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
size += calculateDirSize(file);
} else {
size += file.length();
}
}
return size;
}
3.3 复制文件夹
![在这里插入图片描述](https://img-blog.csdnimg.cn/3bdbdef9fd43454f98159f855893be8a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LuO6Zu25byA5aeL55qESkFWQeS4lueVjA==,size_20,color_FFFFFF,t_70,g_se,x_16)
public static void copyDirUtil(File srcDir, File desDir) throws IOException {
FileUtils.copyDirectory(srcDir, desDir);
}
public static void copyDir(File srcDir, File desDir) throws IOException {
if (!desDir.exists()) {
desDir.mkdir();
}
File newDir = new File(desDir, srcDir.getName());
newDir.mkdir();
File[] files = srcDir.listFiles();
if (files == null || files.length == 0) {
return;
}
for (File file : files) {
if (file.isDirectory()) {
copyDir(file, newDir);
} else {
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(new File(newDir, file.getName()));
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
fis.close();
fos.close();
}
}
}
3.4 剪切文件夹
![在这里插入图片描述](https://img-blog.csdnimg.cn/5bbe95e7b28d44ec8605c3e449ad7be0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LuO6Zu25byA5aeL55qESkFWQeS4lueVjA==,size_20,color_FFFFFF,t_70,g_se,x_16)
public static void cutDirUtil(File srcDir, File desDir) throws IOException {
FileUtils.moveDirectory(srcDir,desDir);
}
public static void cutDir(File srcDir, File desDir) throws IOException {
if (!desDir.exists()) {
desDir.mkdir();
}
File newDir = new File(desDir, srcDir.getName());
newDir.mkdir();
File[] files = srcDir.listFiles();
if (files == null || files.length == 0) {
srcDir.delete();
return;
}
for (File file : files) {
if (file.isDirectory()) {
cutDir(file, newDir);
} else {
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(new File(newDir, file.getName()));
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
fis.close();
fos.close();
file.delete();
}
}
srcDir.delete();
}
3.5 删除文件夹
![在这里插入图片描述](https://img-blog.csdnimg.cn/323472f591114227803b73deb1bfc6d8.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LuO6Zu25byA5aeL55qESkFWQeS4lueVjA==,size_20,color_FFFFFF,t_70,g_se,x_16)
public static boolean deleteDir(File srcDir) {
File[] files = srcDir.listFiles();
if (files == null || files.length == 0) {
return srcDir.delete();
}
for (File file : files) {
if (file.isDirectory()) {
deleteDir(file);
} else {
file.delete();
}
}
return srcDir.delete();
}
3.6 复制指定类型文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/0aafbc8aeb704faf9064d6f979d49afd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LuO6Zu25byA5aeL55qESkFWQeS4lueVjA==,size_20,color_FFFFFF,t_70,g_se,x_16)
public static Map<File, String> serchTypeFile(File srcDir, String desFileSuffix) {
Map<File, String> map = new HashMap<>();
File[] files = srcDir.listFiles();
if (files == null) {
return map;
}
for (File file : files) {
if (file.isDirectory()) {
map.putAll(serchTypeFile(file, desFileSuffix));
} else {
if (file.getName().toLowerCase().endsWith(desFileSuffix)) {
map.put(file.getAbsoluteFile(), file.getName());
}
}
}
return map;
}
public static void copyTypeDir(File srcDir, File desDir, String desFileSuffix) throws IOException {
Map<File, String> map = serchTypeFile(srcDir, desFileSuffix);
Set<Map.Entry<File, String>> entries = map.entrySet();
for (Map.Entry<File, String> entry : entries) {
File key = entry.getKey();
String value = entry.getValue();
System.out.println(key + "---" + value);
String[] names = key.getName().split("\\.");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS");
String format = sdf.format(new Date());
String s = names[0] + "(" + format + ")." + names[1];
File file = new File(desDir, s);
FileUtils.copyFile(key,file);
}
}
第四章 参考资料
B站黑马视频