删除通配符表示的文件及文件夹
来源:互联网 发布:手机字体颜色软件 编辑:程序博客网 时间:2024/06/01 10:04
可以删除用通配符表示的文件及文件夹。支持多层目录,多个通配符。
代码如下:
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class DeleteFiles {
public static void deletes(File fi) {
if (fi.exists()) {
if (fi.isFile())
//fi.delete();
System.out.println("删除:" + fi.getName());
else {
if (fi.isDirectory()) {
File[] fis = fi.listFiles();
for (int i = 0; i < fis.length; i++)
deletes(fis[i]);
//fi.delete();
System.out.println("删除:" + fi.getName());
}
}
}else
System.out.println("文件不存在:"+fi.getAbsolutePath());
}
public static void deleteSigns(File mainDir, String file) {
String subStr = "";
List<File> fls = new ArrayList<File>();
int pre = file.indexOf("/");
if (pre > -1) {
String dirName = file.substring(0, pre);
subStr = file.substring(pre + 1);
fls = find(mainDir, dirName);
for (File f : fls) {
if (f.isDirectory()) {
deleteSigns(f, subStr);
}
}
} else {
fls = find(mainDir, file);
for (File f : fls) {
deletes(f);
}
}
}
public static List<File> find(File mainDir, String str) {
System.out.println("当前目录" + mainDir.getAbsolutePath() + " " + str);
File[] files = mainDir.listFiles();
List<File> fls = new ArrayList<File>();
int length = 0;
int num = 0;
int start = -1;
int end = -1;
length = str.length();
start = str.indexOf("*");
end = str.lastIndexOf("*");
String[] ss = str.split("[*]");
for (int i = 0; i < length; i++) {
if ('*' == str.charAt(i)) {
num++;
}
}
//System.out.println("num---->" + num);
switch (num) {
case 0:
File fff = new File(mainDir, str);
fls.add(fff);
//System.out.println("添加:"+fff.getName());
break;
case 1: // 只有一个*号的情况
if (0 == start) { // 在开始的位置
for (File f : files) {
if (f.getName().endsWith(ss[1])) {
fls.add(f);
//System.out.println("添加:"+f.getName());
}
}
} else if (length - 1 == start) { // 在结束的位置
for (File f : files) {
if (f.getName().startsWith(ss[0])) {
fls.add(f);
// System.out.println("添加:"+f.getName()+"---"+ss[0]);
}
}
} else { // 在中间
for (File f : files) {
if (f.getName().startsWith(ss[0])
&& f.getName().endsWith(ss[1])) {
fls.add(f);
//System.out.println("添加:"+f.getName());
}
}
}
break;
default: // 有两个或多个*号的情况
if (0 == start && length - 1 == end) { // 在开始的位置和结束的位置都有*号
for (File f : files) {
boolean add = false;
String name = f.getName();
for (String s : ss) {
int i = name.indexOf(s);
if (i > -1) {
name = name.substring(i + s.length());
// System.out.println("当前:"+name);
add = true;
} else {
add = false;
break;
}
}
if (add) {
fls.add(f);
// System.out.println("添加:"+f.getName());
}
}
} else if (0 == start && length - 1 != end) { // 开始的位置有*号且结束的位置没有*号
for (File f : files) {
boolean add = false;
String name = f.getName();
if (name.endsWith(ss[ss.length - 1])) {
for (String s : ss) {
int i = name.indexOf(s);
if (i > -1) {
name = name.substring(i + s.length());
add = true;
} else {
add = false;
break;
}
}
if (add) {
fls.add(f);
// System.out.println("添加:"+f.getName());
}
}
}
} else if (0 != start && length - 1 == end) { // 开始的位置没有*号且结束的位置有*号
for (File f : files) {
boolean add = false;
String name = f.getName();
if (name.startsWith(ss[0])) {
for (String s : ss) {
int i = name.indexOf(s);
if (i > -1) {
name = name.substring(i + s.length());
add = true;
} else {
add = false;
break;
}
}
if (add) {
fls.add(f);
// System.out.println("添加:"+f.getName());
}
}
}
} else { // *号在中间 的情况(开始和结束都没有*号)
for (File f : files) {
boolean add = false;
String name = f.getName();
if (name.startsWith(ss[0])
&& name.endsWith(ss[ss.length - 1]))
for (String s : ss) {
int i = name.indexOf(s);
if (i > -1) {
name = name.substring(i + s.length());
add = true;
} else {
add = false;
break;
}
}
if (add) {
fls.add(f);
// System.out.println("添加:"+f.getName());
}
}
}
}
return fls;
}
}
希望对大家能有所帮助,欢迎大家常来参观!
- 删除通配符表示的文件及文件夹
- 删除文件及文件夹
- 删除文件及文件夹
- 删除文件及文件夹
- .net 删除文件夹及里面的文件
- 文件及文件夹的删除、创建、遍历
- php删除文件夹及下面的文件
- 文件及文件夹的新建与删除
- 删除文件夹及问价夹里的文件
- 删除文件,及文件夹的方法
- 由于工作需要,写了一个关于支持通配符的批量删除文件或文件夹
- 由于工作需要,写了一个关于支持通配符的批量删除文件或文件夹
- 删除文件夹中包含的子文件夹及文件
- PHP删除文件夹及文件夹下的所有文件
- PHP删除文件夹及文件夹下的所有文件
- 删除顽固文件夹及文件
- C# 删除文件夹及文件
- 删除顽固文件及文件夹
- explain postmaster.pid
- 关于Visual Assist 函数注释
- 用WPF轻松打造iTunes CoverFlow效果
- Scheme 和 ZOJ
- android中Mms学习笔记——短信(sms)接收流程(三)
- 删除通配符表示的文件及文件夹
- jquery innerHTML使用注意
- Java程序的编码规范
- Latex中字体大小
- j2ee开发中的“java容器”和“web容器”有什么区别?
- 【树形dp】PKU-3107-Godfather
- 给表TABLE加注释
- python 的os.fork()
- 如何在Mac机上设置host