m0_56007236 2021-05-25 23:22 采纳率: 0%
浏览 95

文件删除时显示0x80070091:目录不是空的?

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删不掉。

 

  • 写回答

2条回答 默认 最新

  • 关注

    请把代码格式化一下,点击“代码段”插入代码。

    评论

报告相同问题?

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向