packagecom.covics.zfh;importjava.io.File;importjava.io.FilenameFilter;/*** 实现带*号的删除文件

*@authordoudou

**/

public classTestDeleteFile {public static voidmain(String args[]) {boolean delFile =

//windows//deleteFileWithSign("E:\\fileDeleteTest\\test\\t*ve.txt");//linux

deleteFileWithSign("/home/work/ssst*ve.txt");

System.out.println("main---->"+delFile);

}/*** 删除带*的文件

*@paramfileName

*@return

*/

public static booleandeleteFileWithSign(String fileName) {//文件夹名称

String dirName = "";//要删除的文件类型

String fileType = "";//不带后缀的文件名

String nameWithoutType = "";//*号个数

int num = 0;if (null == fileName || "".equals(fileName)) {return false;

}

String osName= System.getProperty("os.name")if (osName.toLowerCase().contains("windows")){int index = fileName.lastIndexOf("\\") + 1;

}else{int index = fileName.lastIndexOf("/") + 1;

}

nameWithoutType= fileName.substring(index, fileName.lastIndexOf("."));

fileType=fileName

.substring(fileName.lastIndexOf("."), fileName.length());

dirName= fileName.substring(0, index);

File dir= newFile(dirName);

System.out.println("dir:"+dir);

System.out.println("exits"+dir.exists());

System.out.println("dir.isDirectory()"+dir.isDirectory());if (!dir.exists() || !dir.isDirectory()) {return false;

}//*号的位置

int start = -1, end = -1;

start= nameWithoutType.indexOf("*");

end= nameWithoutType.lastIndexOf("*");int length =nameWithoutType.length();for (int i=0;i

num++;

}

}

System.out.println("num---->"+num);//删除的类型

int delType = 0;switch(num) {case 0:returndeleteFile(fileName);case 1 : //只有一个*号的情况

if (0==start) { //在开始的位置

delType = 1; //只调用endWith方法

} else if (length-1 == start) { //在结束的位置

delType = 2; //只调用startWith方法

} else { //在中间

delType = 3; //只调用contain方法

}break;default : //有两个或多个*号的情况

if (0 == start && length-1 == end) { //在开始的位置和结束的位置都有*号

delType = 4; //只调用contain方法

} else if (0 == start && length-1 != end) { //开始的位置有*号且结束的位置没有*号

delType = 5; //调用contain和endWith方法

} else if (0 != start && length-1 == end) { //开始的位置没有*号且结束的位置有*号

delType = 6; //调用startWith和contain方法

} else { //*号在中间 的情况(开始和结束都没有*号)

delType = 7; //只调用contain方法

}break;

}boolean flag = false;

String[] names=dir

.list(newDelFileFilter(nameWithoutType, fileType, delType));

System.out.println("names.length---->"+names.length);for (int i = 0; i < names.length; i++) {

System.out.println("f--names-->"+dirName+names[i]);

File f= new File(dirName +names[i]);if (!f.exists() || !f.isFile()) {return false;

}

flag=deleteFile(f.getAbsolutePath());if (!flag) {break;

}

}returnflag;

}/*** 删除单个文件

*

*@paramfileName

*@return

*/

public static booleandeleteFile(String fileName) {

File file= newFile(fileName);if (file.isFile() &&file.exists()) {

file.delete();return true;

}return false;

}/*** 删除文件夹

*

*@paramdir

*@return

*/

public static booleandeleteDir(String dir) {//判断是否有带文件夹符号。

if (!dir.endsWith(File.separator)) {

dir= dir +File.separator;

}

File file= newFile(dir);if (!file.isDirectory() || !file.exists()) {return false;

}boolean flag = true;

File[] files=file.listFiles();for (int i = 0; i < files.length; i++) {if (files[i].isFile()) { //删除文件

flag =deleteFile(files[i].getAbsolutePath());if (!flag) {break;

}

}else if (files[i].isDirectory()) { //删除文件夹

flag =deleteDir(files[i].getAbsolutePath());if (!flag) {break;

}

}else{return false;

}

}if (file.delete()) { //删除自身

return true;

}return false;

}

}/*** FileFilter类

* 删除带*文件

*@authordoudou

**/

class DelFileFilter implementsFilenameFilter {//传进来的文件URL

String fileName;

String fileType;//文件类型//删除的类型。 1:*号在开头; 2:*号在末尾

intdelType;public DelFileFilter(String name, String fileType, intdelType) {this.fileType =fileType;this.delType =delType;this.fileName =name;

}

@Overridepublic booleanaccept(File dir, String name) {//将文件名分割顾字符串

String[] ss = fileName.split("[*]");//首先判断是否是要删除的文件类型

if (!isThisTypeFile(name)) {return false;

}boolean flag = true;switch(delType) {case 1:for(String s : ss) {if (!"".equals(s)){

flag=endWithS(name, s);

}

}returnflag;case 2:for(String s : ss) {if (!"".equals(s)){

flag=startWithS(name, s);

}

}returnflag;case 3:case 4:case 7:for(String s : ss) {if (!"".equals(s)) {

flag=contains(name, s);if (!flag) {break;

}

}

}returnflag;case 5:boolean flag1 = false, flag2 = false;for (int i=0;i

flag1=contains(name, ss[i]);if (!flag1) {break;

}

}if (i == ss.length-1) {

flag2=endWithS(name, ss[i]);

}

}

}

flag= flag1 &&flag2;returnflag;case 6:boolean flag3 = false, flag4 = false;

flag3= startWithS(name, ss[0]);for (int i=1;i

flag4=contains(name, ss[i]);if (!flag4)break;

}

}

flag= flag3 &&flag4;returnflag;default:

flag= false;returnflag;

}

}/*** 判断是否是该类型的文件

*@paramfile

*@return

*/

public booleanisThisTypeFile(String file) {returnfile.toLowerCase().endsWith(fileType);

}/*** 包含某字符

*@paramfile

*@paramstr

*@return

*/

public booleancontains(String file, String str) {return(file.toLowerCase().contains(str));

}/*** 以某字符开始

*@paramfile

*@paramstr

*@return

*/

public booleanstartWithS(String file, String str) {returnfile.toLowerCase().startsWith(str);

}/*** 以file字符结束

*@paramfile

*@paramstr

*@return

*/

public booleanendWithS(String file, String str) {return file.toLowerCase().endsWith(str+fileType);

}

}

java contains 通配符_java删除文件支持通配符相关推荐

  1. java删_JAVA删除文件夹

    自己写了段删除文件夹的JAVA代码.因为java.io.File只能删除文件和空文件夹,所以写了这段代码.采用树的后根序遍历的算法写成.没有使用递归,而是用的循环方式.使用file.getParent ...

  2. java web删除文件_Web开发为了java端程序能删除文件的解决办法

    Web开发为了java端程序能删除文件,必须在.../jre/lib/security/java.policy文件中添加以下两个中的任何一段代码进去. 注:必须是服务器的本地文件,局域网内的其他机器文 ...

  3. java清空文件夹_java 删除文件夹中的所有内容而不删除文件夹本身的实例

    package com.xx; import java.io.File; public class Test { public static void main(String[] args) { St ...

  4. java 删除目录_java删除文件夹及子目录

    packagetest;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.File;public ...

  5. java删不掉_java删除文件删不掉相关阅读-java删除文件删不掉文章阅读-123文学网...

    U盘里面的文件有些不想要了,想要删除的时候删不掉!遇到这种问题该怎么办呢?下面是小编分享的经验,一起来看一下吧. 1.在系统中打开电脑资源管理器,先选中U盘. 2.点击鼠标右键,在菜单中选择" ...

  6. java 中io的删除文件_总结删除文件或文件夹的7种方法-JAVA IO基础总结第4篇

    本文是Java IO总结系列篇的第4篇,前篇的访问地址如下: 如果您阅读完成,觉得此文对您有帮助,请给我点个赞,您的支持是我不竭的创作动力. 为了方便大家理解,我特意制作了本文对应的视频:总结删除文件 ...

  7. JAVA代码如何实现删除文件夹6_java文件创建、删除、读取、写入操作大全

    一.获得控制台用户输入的信息 public String getInputMessage() throws IOException...{ System.out.println("请输入您的 ...

  8. java中递归删除_浅谈Java中使用递归方法删除文件

    要在Java中平台无关的方式下安全地删除一个非空目录,你还需要一个算法.该算法首先删除文件,然后再从目录树的底部由下至上地删除其中所有的目录. 只要简单地在目录中循环查找文件,再调用delete就可以 ...

  9. Java中file.delete()删除文件失败

    删除文件的方法: /*** 删除通过ftp上传到服务器H盘的文件* @param fileName 要删除的文件的文件名* @return 删除成功返回true,否则返回false*/private ...

最新文章

  1. python爬取哔哩哔哩视频_荐爬取哔哩哔哩中的cosplay小视频
  2. NSStirng、NSArray、以及枚举(Method小集合)
  3. html缓存在本地缓存,HTML5 本地缓存 window.localStorage
  4. 2.6 mailx邮件
  5. STM32单片机硬件I2C驱动程序(软件轮询方式)---摘自:FeoTech
  6. 2014年工作中遇到的20个问题:120-140
  7. ttf_openfont可以多次调用吗_【译文】Rust futures: async fn中的thread::sleep和阻塞调用...
  8. 点击链接如何直接跳转到相对应的聊天窗口
  9. 比尔盖茨这样审查项目 1
  10. 速进,双十一内购通道!
  11. vb学生管理系统服务器编程,利用VB进行服务器编程实例汇总.doc
  12. 又拍云php表单,又拍云存储上传插件 - 支持客户端直传、服务端中转、分片上传 – 基于ThinkPHP和Bootstrap的极速后台开发框架...
  13. go每日新闻(2021-04-01)——令牌桶的实现 rate/limt
  14. 高德地图两个不同的的功能合并
  15. 屏幕和摄像头中的视频分辨率P,I,K,MP表示的含义,720p,1080p,2k,5MP
  16. python股票量化交易接口是应用到股票上吗?
  17. linux 硬盘时间查询,Linux 查看硬盘通电时间
  18. DEV C++编写程序出现 [errror]Id returned 1 exit status报错可能出现的原因及解决办法
  19. C++ unordered_map和unordered_set的使用
  20. layui 点击行事件 修改当前行颜色

热门文章

  1. qq显示下线通知什么意思_最近时不时地收到QQ下线的通知
  2. 等压线上怎么画风向_战场上骑兵应该怎么拔刀?从清人佩刀为何总是刀柄向后说起...
  3. oracle 触发器 merge,[OT]函数|过程|触发器|插入(insert)|修改(Merge)
  4. java上下文即ServletContext
  5. html中input两个圆括号,如何使用Jquery将光标聚焦在两个括号(括号)之间?
  6. 数据库设计基础:数据字典相关知识笔记
  7. 计算机系统基础:设备管理采用的相关技术知识笔记
  8. 程序员的10个快乐瞬间!
  9. SqlServer与.NET的数据类型映射关系图
  10. oracle 修索引改空间_Oracle如何更改表空间的数据文件位置详解