Java去遍历文件夹目录下,指定文件名称格式的,表达式写法的问题 10
我要遍历一个目录下的文件,该目录下的文件夹命名方式如SUBJECT_9001_AAAA,SUBJECT_9002_SDSA,这种格式,现在有个问题,这个目录可能会有别的文...
我要遍历一个目录下的文件,该目录下的文件夹命名方式如SUBJECT_9001_AAAA,SUBJECT_9002_SDSA,这种格式,现在有个问题,这个目录可能会有别的文件夹或者文件,循环遍历的是时候,代码怎么写,才能比较的比较准确,如我是这样写的,boolean flag = (file.getName().contions("SUBJECT_"")&&(file.getName.lastIndexOf("_"))
这样判断的话,还是有的情况包括不到如:有一个这样的文件夹SUBJECT_1,还是会进循环判断
哪个高手可以帮我看看这个判断文件名的这个表达式要怎么写,包括的比较全, 比较安全,表达式看起来比较简洁,让他只去读SUBJECT_9001_ABCD这种命名格式的文件夹 展开
这样判断的话,还是有的情况包括不到如:有一个这样的文件夹SUBJECT_1,还是会进循环判断
哪个高手可以帮我看看这个判断文件名的这个表达式要怎么写,包括的比较全, 比较安全,表达式看起来比较简洁,让他只去读SUBJECT_9001_ABCD这种命名格式的文件夹 展开
4个回答
展开全部
按现在看到情况匹配"SUBJECT_"开头之后为4位数字再拼接"_"再拼接4位大写的英文字母
需要修改可追问
boolean flag = file.getName().matches("^SUBJECT_[\\d]{4}_[A-Z]{4}$");
需要修改可追问
boolean flag = file.getName().matches("^SUBJECT_[\\d]{4}_[A-Z]{4}$");
更多追问追答
追问
SUBJECT_9XXX_这个格式是固定的,SUBJECT_9XXX_XXX是任意长度的数字字母下划线都可以
追答
boolean flag = file.getName().matches("^SUBJECT_9[\\d]{3}_\\w+$");
//匹配"SUBJECT_"开头之后为数字9再拼接3位任意数字再拼接"_"再拼接至少一位数字字母下划线
展开全部
要么用正则,
要么自己写一个判断算法.
(file.getName().contions("SUBJECT_"")&&(file.getName.lastIndexOf("_"))
单纯这样太简单了.
比如整个的长度,有几个下划线,中间的只能是数字,等等,这些都做判断.
要么自己写一个判断算法.
(file.getName().contions("SUBJECT_"")&&(file.getName.lastIndexOf("_"))
单纯这样太简单了.
比如整个的长度,有几个下划线,中间的只能是数字,等等,这些都做判断.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用String的matches方法加上^$根本是多此一举。
跟你写了段代码希望能帮到你,
import java.io.File;
import java.io.FileFilter;
public class TestStart {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
File file = new File("......"); //文件路径
/*
* 如果需要深层次的遍历,把这段代码封装成一个方法做递归
*/
File[] files = file.listFiles(new TestFilter());
for(File f : files) {
System.out.println(f.getName());
}
}
}
class TestFilter implements FileFilter {
public boolean accept(File file) {
//文件的具体格式你发我,我跟你写个正则表达式替换下
return file.getName().matches("SUBJECT_\\d{4}_[A-Z]{4}");
}
}
跟你写了段代码希望能帮到你,
import java.io.File;
import java.io.FileFilter;
public class TestStart {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
File file = new File("......"); //文件路径
/*
* 如果需要深层次的遍历,把这段代码封装成一个方法做递归
*/
File[] files = file.listFiles(new TestFilter());
for(File f : files) {
System.out.println(f.getName());
}
}
}
class TestFilter implements FileFilter {
public boolean accept(File file) {
//文件的具体格式你发我,我跟你写个正则表达式替换下
return file.getName().matches("SUBJECT_\\d{4}_[A-Z]{4}");
}
}
追问
如SUBJECT_xxxx_XXXX,其中xxxx是以9000-9999的数字,XXXX是以大写字符开头,然后后面是任意的,帮我写一个谢谢了
追答
“XXXX是以大写字符开头”
如果后面只有4个字母:SUBJECT_9\\d{3}_[A-Z]\\w{3}
如果长度不限:SUBJECT_9\\d{3}_[A-Z]\\w*
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询