关于java编程思想一个目录列表器例子的疑问 //{Args:"D.*\.java"} import java.util

关于java编程思想一个目录列表器例子的疑问//{Args:"D.*\.java"}importjava.util.regex.*;importjava.io.*;imp... 关于java编程思想一个目录列表器例子的疑问
//{Args:"D.*\.java"}
import java.util.regex.*;
import java.io.*;
import java.util.*;
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 dirItem:list){
System.out.println(dirItem);
}
}
}
class DirFilter implements FilenameFilter{
private Pattern pattern;
public DirFilter(String regex){
pattern=Pattern.compile(regex);
}
public boolean accept(File dir, String name) {
return pattern.matcher(name).matches();
}
}
就这么一个程序,目的应该是输出D盘所有的java文件,只是不知道所谓的args参数是怎么输入给程序的?new DirFilter(args[0]) 中的args[0],file dir,String name这些参数都怎么获取呢?什么例子啊这是,书上还写得就是运行就输出所有.java文件,
展开
 我来答
萢萢i3
2016-05-21 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.7万
采纳率:71%
帮助的人:4513万
展开全部

运行的时候带上参数,格式如下:

java 类名 参数名

举一个简单的例子:

1、代码如下:

public class Demo {
    public static void main(String[] args) {
        for (int i = 0; i < args.length; i++) {
            System.out.println(args[i]);
        }
    }
}


2、使用javac Demo.java编译:


3、这一步是最关键的部分,也是你的问题中的疑惑部分,使用java带参数运行,并输出参数,具体操作及结果如下:

新蛋部落just超
2016-05-21 · TA获得超过421个赞
知道小有建树答主
回答量:272
采纳率:0%
帮助的人:185万
展开全部
args 参数怎么传递给程序么?
命令行为例
比如你的程序名DirList
那就命令行下输入 c:\java DirList 参数1,参数2...
如果是ide 运行的时候有设置运行参数

下面是一个文件查找的实例,吧通配符改改就能实现,找什么都行啦

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
* @author tiwson 2010-06-02
*
*/
public class FileSearcher {

/**
* 递归查找文件
*
* @param baseDirName
* 查找的文件夹路径
* @param targetFileName
* 需要查找的文件名
* @param fileList
* 查找到的文件集合
*/
public static void findFiles(String baseDirName, String targetFileName, List<File> fileList) {
/**
* 算法简述: 从某个给定的需查找的文件夹出发,搜索该文件夹的所有子文件夹及文件,
* 若为文件,则进行匹配,匹配成功则加入结果集,若为子文件夹,则进队列。 队列不空,重复上述操作,队列为空,程序结束,返回结果。
*/
String tempName = null;
// 判断目录是否存在
File baseDir = new File(baseDirName);
if (!baseDir.exists() || !baseDir.isDirectory()) {
System.out.println("文件查找失败:" + baseDirName + "不是一个目录!");
} else {
String[] filelist = baseDir.list();
for (int i = 0; i < filelist.length; i++) {
File readfile = new File(baseDirName + "\\" + filelist[i]);
// System.out.println(readfile.getName());
if (!readfile.isDirectory()) {
tempName = readfile.getName();
if (FileSearcher.wildcardMatch(targetFileName, tempName)) {
// 匹配成功,将文件名添加到结果集
fileList.add(readfile.getAbsoluteFile());
}
} else if (readfile.isDirectory()) {
findFiles(baseDirName + "\\" + filelist[i], targetFileName, fileList);
}
}
}
}

/**
* 通配符匹配
*
* @param pattern
* 通配符模式
* @param str
* 待匹配的字符串
* @return 匹配成功则返回true,否则返回false
*/
private static boolean wildcardMatch(String pattern, String str) {
int patternLength = pattern.length();
int strLength = str.length();
int strIndex = 0;
char ch;
for (int patternIndex = 0; patternIndex < patternLength; patternIndex++) {
ch = pattern.charAt(patternIndex);
if (ch == '*') {
// 通配符星号*表示可以匹配任意多个字符
while (strIndex < strLength) {
if (wildcardMatch(pattern.substring(patternIndex + 1), str.substring(strIndex))) {
return true;
}
strIndex++;
}
} else if (ch == '?') {
// 通配符问号?表示匹配任意一个字符
strIndex++;
if (strIndex > strLength) {
// 表示str中已经没有字符匹配?了。
return false;
}
} else {
if ((strIndex >= strLength) || (ch != str.charAt(strIndex))) {
return false;
}
strIndex++;
}
}
return (strIndex == strLength);
}

public static void main(String[] paramert) {
// 在此目录中找文件
String baseDIR = "C:\\Users\\Administrator\\Desktop\\tmp";
// 找扩展名为txt的文件
String fileName = "*2*.jpg";
List<File> resultList = new ArrayList<File>();
FileSearcher.findFiles(baseDIR, fileName, resultList);
if (resultList.size() == 0) {
System.out.println("No File Fount.");
} else {
for (int i = 0; i < resultList.size(); i++) {
System.out.println(resultList.get(i));// 显示查找结果。
}
}
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式