java contains 通配符_java删除文件支持通配符
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删除文件支持通配符相关推荐
- java删_JAVA删除文件夹
自己写了段删除文件夹的JAVA代码.因为java.io.File只能删除文件和空文件夹,所以写了这段代码.采用树的后根序遍历的算法写成.没有使用递归,而是用的循环方式.使用file.getParent ...
- java web删除文件_Web开发为了java端程序能删除文件的解决办法
Web开发为了java端程序能删除文件,必须在.../jre/lib/security/java.policy文件中添加以下两个中的任何一段代码进去. 注:必须是服务器的本地文件,局域网内的其他机器文 ...
- java清空文件夹_java 删除文件夹中的所有内容而不删除文件夹本身的实例
package com.xx; import java.io.File; public class Test { public static void main(String[] args) { St ...
- java 删除目录_java删除文件夹及子目录
packagetest;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.File;public ...
- java删不掉_java删除文件删不掉相关阅读-java删除文件删不掉文章阅读-123文学网...
U盘里面的文件有些不想要了,想要删除的时候删不掉!遇到这种问题该怎么办呢?下面是小编分享的经验,一起来看一下吧. 1.在系统中打开电脑资源管理器,先选中U盘. 2.点击鼠标右键,在菜单中选择" ...
- java 中io的删除文件_总结删除文件或文件夹的7种方法-JAVA IO基础总结第4篇
本文是Java IO总结系列篇的第4篇,前篇的访问地址如下: 如果您阅读完成,觉得此文对您有帮助,请给我点个赞,您的支持是我不竭的创作动力. 为了方便大家理解,我特意制作了本文对应的视频:总结删除文件 ...
- JAVA代码如何实现删除文件夹6_java文件创建、删除、读取、写入操作大全
一.获得控制台用户输入的信息 public String getInputMessage() throws IOException...{ System.out.println("请输入您的 ...
- java中递归删除_浅谈Java中使用递归方法删除文件
要在Java中平台无关的方式下安全地删除一个非空目录,你还需要一个算法.该算法首先删除文件,然后再从目录树的底部由下至上地删除其中所有的目录. 只要简单地在目录中循环查找文件,再调用delete就可以 ...
- Java中file.delete()删除文件失败
删除文件的方法: /*** 删除通过ftp上传到服务器H盘的文件* @param fileName 要删除的文件的文件名* @return 删除成功返回true,否则返回false*/private ...
最新文章
- python爬取哔哩哔哩视频_荐爬取哔哩哔哩中的cosplay小视频
- NSStirng、NSArray、以及枚举(Method小集合)
- html缓存在本地缓存,HTML5 本地缓存 window.localStorage
- 2.6 mailx邮件
- STM32单片机硬件I2C驱动程序(软件轮询方式)---摘自:FeoTech
- 2014年工作中遇到的20个问题:120-140
- ttf_openfont可以多次调用吗_【译文】Rust futures: async fn中的thread::sleep和阻塞调用...
- 点击链接如何直接跳转到相对应的聊天窗口
- 比尔盖茨这样审查项目 1
- 速进,双十一内购通道!
- vb学生管理系统服务器编程,利用VB进行服务器编程实例汇总.doc
- 又拍云php表单,又拍云存储上传插件 - 支持客户端直传、服务端中转、分片上传 – 基于ThinkPHP和Bootstrap的极速后台开发框架...
- go每日新闻(2021-04-01)——令牌桶的实现 rate/limt
- 高德地图两个不同的的功能合并
- 屏幕和摄像头中的视频分辨率P,I,K,MP表示的含义,720p,1080p,2k,5MP
- python股票量化交易接口是应用到股票上吗?
- linux 硬盘时间查询,Linux 查看硬盘通电时间
- DEV C++编写程序出现 [errror]Id returned 1 exit status报错可能出现的原因及解决办法
- C++ unordered_map和unordered_set的使用
- layui 点击行事件 修改当前行颜色
热门文章
- qq显示下线通知什么意思_最近时不时地收到QQ下线的通知
- 等压线上怎么画风向_战场上骑兵应该怎么拔刀?从清人佩刀为何总是刀柄向后说起...
- oracle 触发器 merge,[OT]函数|过程|触发器|插入(insert)|修改(Merge)
- java上下文即ServletContext
- html中input两个圆括号,如何使用Jquery将光标聚焦在两个括号(括号)之间?
- 数据库设计基础:数据字典相关知识笔记
- 计算机系统基础:设备管理采用的相关技术知识笔记
- 程序员的10个快乐瞬间!
- SqlServer与.NET的数据类型映射关系图
- oracle 修索引改空间_Oracle如何更改表空间的数据文件位置详解