import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.util.ArrayList;
public class FileUtils {
public static ArrayList<String> listFiles(File file, final String key) {
FilenameFilter filter = new FilenameFilter() {
public boolean accept(File dir, String name) {
File currFile= new File(dir, name);
if (currFile.isFile() && name.contains(key)) {
return true;
}
return false;
}
};
ArrayList<String> arraylist= fileDir(file, filter);
return arraylist;
}
public static ArrayList<String> listFiles(File file,final String[] suffixArray) {
FilenameFilter filter= new FilenameFilter() {
public boolean accept(File dir, String name) {
File currFile = new File(dir, name);
if (currFile.isFile()) {
for (String suffix : suffixArray) {
if (name.endsWith("." + suffix)) {
return true;
}
}
}
return false;
}
};
ArrayList<String> arraylist= fileDir(file, filter);
return arraylist;
}
public static ArrayList<String> fileDir(File dir, FilenameFilter filter) {
ArrayList<String> arraylist =new ArrayList<String>();
File[] lists = dir.listFiles(filter);
for (File list : lists) {
arraylist.add(list.getAbsolutePath());
}
File[] files =dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
ArrayList<String> every = fileDir(file, filter);
arraylist.addAll(every);
}
}
return arraylist;
}
public static void copySrcPathToDestPath(File srcDir, File destDir)
throws Exception {
File[] files = srcDir.listFiles();
for (int i = 0; i < files.length; i++) {
File copiedFile = new File(destDir, files[i].getName());
if (files[i].isDirectory()) {
if (!copiedFile.mkdirs()) {
System.out.println("无法创建:" + copiedFile);
return;
}
copySrcPathToDestPath(files[i], copiedFile);
} else {
FileInputStream input = new FileInputStream(files[i]);
FileOutputStream output = new FileOutputStream(copiedFile);
byte[] buffer = new byte[1024];
int n = 0;
while ((n = input.read(buffer)) != -1) {
output.write(buffer, 0, n);
}
input.close();
output.close();
}
}
}
}
import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;
public class DocumentManager {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
System.out.println("--1:指定关键字检索文件 2:指定后缀名检索文件 " + "3:复制文件/目录 4:退出--");
while (true) {
System.out.print("请输入指令:");
int command = sc.nextInt();
switch (command) {
case 1:
searchByKeyWorld();
break;
case 2:
searchBySuffix();
break;
case 3:
copyDirectory();
break;
case 4:
exit();
break;
default:
System.out.println("您输入的指令错误!");
break;
}
}
}
private static void searchByKeyWorld() {
Scanner sc = new Scanner(System.in);
System.out.print("请输入要检索的目录位置:");
String path = sc.next();
File file = new File(path);
if (!file.exists() || !file.isDirectory()) {
System.out.println(path + " (不是有效目录)");
return;
}
System.out.print("请输入搜索关键字:");
String key = sc.next();
ArrayList<String> list = FileUtils.listFiles(file, key);
for (Object obj : list) {
System.out.println(obj);
}
}
private static void searchBySuffix() {
Scanner sc = new Scanner(System.in);
System.out.print("请输入要检索的目录位置:");
String path = sc.next();
File file = new File(path);
if (!file.exists() || !file.isDirectory()) {
System.out.println(path + " (不是有效目录)");
return;
}
System.out.print("请输入搜索后缀:");
String suffix = sc.next();
String[] suffixArray = suffix.split(",");
ArrayList<String> list = FileUtils.listFiles(file, suffixArray);
for (Object obj : list) {
System.out.println(obj);
}
}
private static void copyDirectory() throws Exception {
Scanner sc = new Scanner(System.in);
System.out.print("请输入源目录:");
String srcDirectory = sc.next();
File srcFile = new File(srcDirectory);
if (!srcFile.exists() || !srcFile.isDirectory()) {
System.out.println("无效目录!");
return;
}
System.out.print("请输入目标位置:");
String destDirectory = sc.next();
File destFile = new File(destDirectory);
if (!destFile.exists() || !destFile.isDirectory()) {
System.out.println("无效位置!");
return;
}
FileUtils.copySrcPathToDestPath(srcFile, destFile);
}
private static void exit() {
System.out.println("您已退出系统,谢谢使用!");
System.exit(0);
}
}
学生,java小白一个,才刚开始学 做Java作业想把一个文件夹里的全部文件复制到另一个文件夹里,应该是程序错误,运行后文件一直在复制,文件夹删不掉。点进去是一个文件夹套一个文件夹,属性显示占用空间却是0字节。请问我应该怎么删除?
运行时选了3,然后输入了目标目录D: \java作业\0703\itcast 目标目录输入了D: \java作业\0703\copy,然后程序运行。发现文件夹似乎一直在复制,我就将程序❌掉了 结果就是copy文件夹里面套着copy文件夹,一个套一个,删除时显示有几千个,但是显示删除错误0x80070091:目标目录不是空的。点击重试,显示正在删除,但是闪屏之后还是存在文件夹。 试过bat删不掉。