递归查看文件、递归删除文件、查看文件夹大小
程序员文章站
2022-05-15 09:50:57
...
package file;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test01 {
public static void main(String[] args) throws IOException {
File f1=new File("C:\\Users\\12042\\Desktop\\String讲解.docx");
File f2=new File("C:\\Users\\12042\\Desktop\\复制.docx");
copyFile(f1,f2);
}
//1.删除一个目录
public static void deleteDirector(File file) {
//首先判断是不是目录,如果不是就删除,如果目录是空的也删除
if(file.isDirectory()){
File[] files=file.listFiles();
if(files.length==0) {
file.delete();
}else {
for(File file1:files) {
//判断是不是目录,如果不是就删除
if(file1.isDirectory()) {
//递归删除
deleteDirector(file1);
}else {
file1.delete();
}
}
}
}else {
file.delete();
}
file.delete();
}
//2.获取目录大小
public static int fileSize(File file) {
int size=0;
//首先判断,这个文件是不是目录,不是则直接输出大小
if(file.isDirectory()) {
File[] files=file.listFiles();
//如果长度不为0则有很多文件继续调用,否则为目录
if(files.length!=0) {
for(File f:files) {
//判断是否为目录
if (f.isDirectory()) {
size+=fileSize(f);
}else {
size+=f.length();
}
}
}else {
size+=0;
}
}else {
size+=file.length();
}
return size;
}
//3.层级展示目录
public static void showDirectory(File file) {
if(file.isDirectory()) {
File[] files=file.listFiles();
if(files.length==0) {
System.out.println(file.getPath());
}else {
for(File f:files) {
if(f.isDirectory()) {
System.out.println(file.getPath());
showDirectory(f);
}else {
System.out.println(f.getPath());
}
}
}
}else {
System.out.println(file.getPath());
}
}
//4.文件的复制
public static void copyFile(File file,File file1) throws IOException {
if(file.exists()) {
FileInputStream in=new FileInputStream(file);
FileOutputStream out=new FileOutputStream(file1);
byte[] arr=new byte[1024];
int size=0;
while((size=in.read(arr))!=-1) {
out.write(arr, 0, size);
}
System.out.println("文件复制完毕!");
in.close();
out.close();
}else {
System.out.println("文件不存在!");
}
}
}
上一篇: 未操作的变量值自动修改--强制类型转换导致变量覆盖
下一篇: Js获取当前时间的月初月末