java 通过递归 删除指定目录下 文件名包含指定字符的文件

递归,即方法自己调用自己。在这个问题中,我们无法知道文件夹的深度,更无法根据深度来实现循环的嵌套 ,所有可以使用递归实现。
上代码

public static void main(String[] args) {	
	delFileByName("D:\\test","a");
}

/**
 * 测试删除
 * @param url 指定的文件路径
 * @param s   指定的特殊字符
 */
public static void delFileByName(String url, String s) {
	// 创建文件
	File grandpaFile = new File(url);
	// 检查该对象是否是文件夹
	if(grandpaFile.isDirectory()) {
		// 返回该目录中的文件和目录	
		File[] fatherFiles = grandpaFile.listFiles();

		if (fatherFiles.length > 0) {
		    // 循环返回的文件
			for (File sonFile : fatherFiles) {
				// 继续调用自身进行判断
				delFileByName(sonFile.getPath(),s);
			}
		} else {
			// 判断自己是否包含特殊字符
			if(grandpaFile.getName().contains(s)) {
				// 删除包含特殊字符的文件
				grandpaFile.delete();
			}
		}
	} else {
		if(grandpaFile.getName().contains(s)) {
			grandpaFile.delete();
		}
	}
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Java的File类和递归函数来遍历回收站中的文件,然后使用contains()方法判断文件名是否包含指定字符串,如果包含则使用delete()方法删除文件。具体代码实现可以参考以下示例: ``` import java.io.File; public class RecycleBin { public static void main(String[] args) { String keyword = "test"; // 指定删除文件名包含的关键字 String recycleBinPath = "C:\\$Recycle.Bin"; // 回收站路径 File recycleBin = new File(recycleBinPath); if (recycleBin.exists() && recycleBin.isDirectory()) { deleteFiles(recycleBin, keyword); } } private static void deleteFiles(File dir, String keyword) { File[] files = dir.listFiles(); if (files != null) { for (File file : files) { if (file.isDirectory()) { deleteFiles(file, keyword); // 递归遍历子目录 } else if (file.getName().contains(keyword)) { file.delete(); // 删除包含关键字的文件 } } } } } ``` ### 回答2: 可以使用Java中的File类和FileUtils类来遍历回收站的文件,并判断是否包含某个字符串。具体步骤如下: 1. 首先,使用File类的`listFiles()`方法获取回收站中的所有文件文件夹。代码如下: ```java File recycleBin = new File("C:\\$Recycle.Bin"); // 回收站的路径 File[] files = recycleBin.listFiles(); // 获取回收站中的所有文件文件夹 ``` 2. 遍历获取到的文件文件夹列表,使用FileUtils类的`readFileToString()`方法读取文件内容,并判断是否包含某个字符串。如果包含,则使用File类的`delete()`方法删除文件。代码如下: ```java String searchString = "待删除字符串"; for (File file : files) { if (!file.isDirectory()) { // 判断是否为文件而不是文件夹 try { String fileContent = FileUtils.readFileToString(file, "UTF-8"); // 读取文件内容 if (fileContent.contains(searchString)) { // 判断文件内容是否包含目标字符串 file.delete(); // 删除文件 } } catch (IOException e) { e.printStackTrace(); } } } ``` 注意:上述代码使用了Apache Commons IO库中的FileUtils类,需要先导入该库。可以通过在Maven项目中添加以下依赖实现: ```xml <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.8.0</version> </dependency> ``` 以上是基于文件内容来判断是否删除文件的方法,如果需要基于文件名判断,可以使用File类的`getName()`方法获取文件名,然后判断是否包含目标字符串。代码如下: ```java String searchString = "待删除字符串"; for (File file : files) { if (!file.isDirectory()) { // 判断是否为文件而不是文件夹 String fileName = file.getName(); // 获取文件名 if (fileName.contains(searchString)) { // 判断文件名是否包含目标字符串 file.delete(); // 删除文件 } } } ``` 以上代码仅供参考,具体实现可以根据实际需求进行调整。 ### 回答3: 要实现Java遍历回收站的文件,并且判断是否包含某个字符串,如果包含删除,可以按照以下步骤进行操作: 1. 使用Java提供的File类,以回收站路径为参数创建一个File对象,表示回收站的目录。 2. 使用File类的listFiles()方法,获取回收站目录下的所有文件和子目录,返回一个文件数组。 3. 遍历文件数组,对于每个文件,使用File类的getName()方法获取文件名,并使用contains()方法判断是否包含某个字符串。可以使用正则表达式进行字符串匹配。 4. 如果文件名包含指定字符串,使用File类的delete()方法删除文件。 5. 对于文件数组中的子目录,可以使用递归的方式继续遍历子目录内的文件。 下面是一个示例代码: ```java import java.io.*; public class RecycleBinFileDeleter { public static void main(String[] args) { String keyword = "某个字符串"; String recycleBinPath = "回收站路径"; File recycleBin = new File(recycleBinPath); File[] files = recycleBin.listFiles(); if (files != null) { for (File file : files) { if (file.isFile()) { String filename = file.getName(); if (filename.contains(keyword)) { file.delete(); } } else if (file.isDirectory()) { deleteFilesInDirectory(file, keyword); } } } } private static void deleteFilesInDirectory(File directory, String keyword) { File[] files = directory.listFiles(); if (files != null) { for (File file : files) { if (file.isFile()) { String filename = file.getName(); if (filename.contains(keyword)) { file.delete(); } } else if (file.isDirectory()) { deleteFilesInDirectory(file, keyword); } } } } } ``` 以上代码可以实现遍历回收站的文件,如果文件名包含指定字符串,则将其删除。注意要替换`回收站路径`为实际的回收站目录路径,`某个字符串`为需要匹配的字符串。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值