键盘输入文件夹路径,计算文件夹大小
package com.huang.digui;
import java.io.File;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
//获取文件夹的大小
File dir = getFile();
long len = getLongth(dir);
System.out.println(len);
}
public static File getFile() {//获取文件夹对象
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println("输入一个文件夹路径");
String line = sc.nextLine();
File dir = new File(line);
if(!dir.exists()) {
System.out.println("您输入的是文件夹不存在");
}else if(dir.isFile()) {
System.out.println("您输入端的是一个文件");
}else {
return dir;
}
}
}
private static long getLongth(File dir) {//计算文件夹大小
long len = 0;
File[] subFiles = dir.listFiles();
for (File subFile : subFiles) {
if(subFile.isFile()) {
len = len + subFile.length();
}else {
len = len + getLongth(subFile);
}
}
return len;
}
检测如果是文件就删除
package com.huang.digui;
import java.io.File;
public class Test2 {
public static void main(String[] args) {
//如果是文件家就删除
File dir = Test1.getFile();
deleteFile(dir);
}
public static void deleteFile(File dir) {
File[] subFiles = dir.listFiles();
for (File file : subFiles) {
if (file.isFile()) {
file.delete();
}else {
deleteFile(file);
}
}
dir.delete();
}
}
文件夹拷贝,从键盘接受两个文件,把其中的一个文件拷贝到另一个上
1,目标文件创建源文件夹
2,获取源文件夹中的所有文件和文件夹,存储在file的数组中】
遍历数组
如果是文件就读写,如果是文件夹是递归调用
public static void copy(File src, File dest) throws IOException {
//目标文件创建源文件夹
File newdir = new File(dest, src.getName());
newdir.mkdir();
File[] subFiles = src.listFiles();
for (File file : subFiles) {
if(file.isFile()) {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos =
new BufferedOutputStream(new FileOutputStream(new File(newdir,file.getName()) ));
int b;
while((b=bis.read())!=-1) {
bos.write(b);
}
bis.close();
bos.close();
}else {
copy(file, newdir);
}
}
}
}
把文件夹的所有文件按照层级打印出来
1,获取所有的文件和文件夹,返回file的数组
2,遍历数组
3,需要打印所有的文件和文件夹
4,如果是文件夹就递归调用
public static void printFile(File dir, int i) {
File[] subfiles = dir.listFiles();
for (File file : subfiles) {
for (int j = 0; j < i; j++) {
System.out.print("\t");
}
System.out.println(file);//无论是文件还是文件夹都需要打印出来
if(file.isDirectory()) {
printFile(file,i+1);//如果是文件夹就需要递归调用
}
}
}