import java.io.File;
import java.util.Arrays;
public class DirList {
public static void main(String[] args) {
File path=new File(".");
String[] list;
if(args.length==0){
list=path.list();
}else{
list=path.list(new DirFilter(args[0]));
Arrays.sort(list,String.CASE_INSENSITIVE_ORDER);
for(String dirlist:list){
System.out.println(dirlist+"111");
}
}
}
}
import java.io.File;
import java.io.FilenameFilter;
import java.util.regex.Pattern;
public class DirFilter implements FilenameFilter{
private Pattern p;
public DirFilter(String regex){
p=Pattern.compile(regex);
}
@Override
public boolean accept(File dir, String name) {
return p.matcher(name).matches();
}
}
1、为什么new File()括号里是个点?
2、我在那个run 配置那个arguments那里写了”D.*\.java“,是这样写的么?书上有句注释是这样写的://{Args:"D.*\.java"}是什么意思?
他的意思是说获得目录里的指定后缀名的文件列表,但就是不懂它的操作是什么意思。
补充一下:在那个run 配置那个arguments那里写了”D.*\.java“运行也没有结果,我D盘是有.java文件的
但为什么运行之后获取不到文件列表,D盘下是有.java文件的啊
追答你用的是eclipse运行的吧?一直用记事本写代码,这个我不怎么清楚,如果可以的话,你在dos界面下运行下试试
还有一点,你的.java是直接在D盘下,还是在D盘下的某个文件夹中
最后,你是不是在arguments中直接写的D.*\.java这个,这个的话,应该是不对的, 它会用"D.*\.,java".match(文件名)。肯定没结果。 你只需要在arguments中写*\.java就可以
直接在D盘下就有.java文件。写成*\.java的话,程序怎么知道是D盘下呢?另外改了之后运行,报的异常是Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0
*\.java
首先表示抱歉,上边的argument应该是“.*\.java”, 至于你那个抛错的原因,你可以看看正则表达式的知识,
之前用D.*\.java 没有结果的原因可能是你当前的project的根目录不再d盘,
你可以打印下path.getAbsolutePath()看看
我刚才试了下,“.*\.java” 没有问题,你再试试
那要怎么做才能得到.java文件列表?
假如要找D盘下的.java文件,该怎么写?