如何从命令行对目录中的所有文件运行Java程序

时间:2014-08-27 21:00:06

标签: java unix command-line command-line-arguments

我有这个java程序,当前程序设置为从命令行接收文件名作为参数,打开它然后读取它。我想配置它,所以我可以传递一个目录名称,程序将在目录中的文件上执行。不太确定如何去做。这是我目前的代码:

static XMLInputFactory factory = XMLInputFactory.newInstance(); 
XMLEventReader reader = null;  
XMLEventFactory eventFactory = null;

public XMLTrimmer(File ifp) throws XMLStreamException, FileNotFoundException {
    this(new FileInputStream(ifp));
}

public XMLTrimmer(InputStream str) throws XMLStreamException, FileNotFoundException {
    try {
        reader = factory.createXMLEventReader(str);
    } catch (XMLStreamException e) {
        e.printStackTrace();
    }
}

主要是这样:

public static void main(String args[]) throws IOException, XMLStreamException {

    File readFile = new File(args[0]);

    XMLTrimmer xr = new XMLTrimmer(readFile);

请让我知道,任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:3)

您必须修改代码以检查参数是否指向目录:

if(readFile.isDirectory()) {
    for(File file : readFile.listFiles()) {
        //process all files in the directory
    }
} else {
    //process single file
}

您还可以添加对多个参数的支持(因为args是一个字符串数组)或没有参数。

答案 1 :(得分:0)

如果您想浏览所有文件递归,您可能需要

public static void main(String[] args) {
    File readFile = new File(args[0]);

    executeForPath(readFile);
}

private static void executeForPath(File readFile) {
    if (readFile.isDirectory()) {
        for (File file : readFile.listFiles()) {
            executeForPath(file);
        }
    } else {
        XMLTrimmer xr = new XMLTrimmer(readFile);
    }
}