我有这个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);
请让我知道,任何帮助表示赞赏。
答案 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);
}
}