Java:FileInputStream的正则表达式/ Wild卡文件路径

时间:2013-05-17 13:18:17

标签: java file-io

我可以将“configFile”传递为/file/es/Promo/promo*.xml而不是/file/es/Promo/pricing.xml

如果不是我怎么能实现这个目标?请指导

// First create a new XMLInputFactory
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
// Setup a new eventReader
InputStream in = new FileInputStream(configFile);
XMLEventReader eventReader = inputFactory.createXMLEventReader(in);
// Read the XML document

请建议。

2 个答案:

答案 0 :(得分:0)

它不会像你建议的那样工作,所以你必须自己实现它。例如,您可以这样做:

String directoryName = "/file/es/Promo/";
File directory = new File(directoryName);
InputStream in = null;
for (String fileName : directory.list()) {
    if (fileName.matches("promo.*\\.xml")) {
        in = new FileInputStream(directoryName + fileName);
        break;
    }
}

答案 1 :(得分:0)

我们通过编写一个方法来使用正则表达式获取FILENAME来实现它,传递WILDCARD,如pric *和PATH

public static String getFileName(String pFilePath, String pFilePattern) throws IOException {

Pattern pattern = Pattern.compile(pFilePattern);
String fileName = null;
File fileDir = new File(pFilePath);
File[] listFiles = fileDir.listFiles();

if (listFiles != null) {
for (int i = 0; i < listFiles.length; i++) {
// ignore directories
if (listFiles[i].isDirectory()) {
continue;
}
Matcher fileMatcher = pattern.matcher(listFiles[i].getName());
if (fileMatcher.find()) {
fileName = listFiles[i].getCanonicalPath();
}
} // end for()
}

return fileName;
}

这将为我们提供文件名,并将其传递给我的查询中提到的F​​ileInputStream。

希望这会有所帮助......其他人