我需要检查文件是否是基于字符串的SQL文件,例如:
com/cerner/careconcepts/allergy/data/action/sql/ActivityDataReltnQuery.sql
所以我认为如下正则表达式应该足够了吗?这适用于http://regexpal.com/,但不适用于我的代码:
fileName.matches(".sql$")
以下是我试图在JarFile中查找所有“.sql”文件的代码:
package jarreader;
import java.io.File;
import java.io.IOException;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
public class processJar {
public static void main(String[] args){
//File file = new File(".");
//for(String fileNames : file.list()) System.out.println(fileNames);
try {
JarFile jarFile = new JarFile("allergies-2.1.2.jar");
Enumeration enumeration = jarFile.entries();
while (enumeration.hasMoreElements())
getSqlContent(enumeration.nextElement());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void getSqlContent(Object obj)
{
JarEntry entry = (JarEntry)obj;
String name = entry.getName();
if(name.matches(".sql$")){
System.out.println(name);
}
}
}
我没有根据上面的正则表达式得到任何输出名称。
答案 0 :(得分:3)
在你的正则表达式.sql $中,.
匹配一个char,之后它会期待sql
。所以它不匹配任何名称。
name.matches(".sql$")
应该是
name.matches(".*\\.sql$")