我正在尝试使用一段代码。目的是检查某个目录中是否有.XML文件。
这是我到目前为止所做的。
File f = new File("saves/*.xml");
if(f.exists()) {
/* Do Something */
} else {
/* do something else */
}
我正在尝试使用通配符来搜索以.XML结尾的任何文件,我在这里错过了一些简单的东西吗?是否有更简单的方法来检查指定目录中是否存在至少一个.XML文件?
提前感谢。
答案 0 :(得分:8)
您可以使用:
File dir = new File("saves");
if (dir.isDirectory()) {
File[] xmlFiles = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File folder, String name) {
return name.toLowerCase().endsWith(".xml");
}
});
}
现在,您的所有xml文件都在File[] xmlFiles
。
答案 1 :(得分:3)
答案 2 :(得分:1)
您需要使用PathMatcher,例如:
PathMatcher matcher =
FileSystems.getDefault().getPathMatcher("glob:*.{xml}");
Path filename = ...;
if (matcher.matches(filename)) {
System.out.println(filename);
}
答案 3 :(得分:1)
将过滤器部件与搜索路径分开,并使用文件名过滤器列出搜索路径中的文件,仅过滤xml文件。如果列表sizee大于0,那么您知道搜索路径包含至少一个xml文件。请参阅以下示例代码:
File f = new File("C:\\");
if (f.isDirectory()){
FilenameFilter filter = new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if(name.endsWith(".xml")){
return true;
}
return false;
}
};
if (f.list(filter).length > 0){
/* Do Something */
}
}
答案 4 :(得分:0)
您可以尝试使用此代码作为参考......
import java.io.*;
public class FindCertainExtension {
private static final String FILE_DIR = "FOLDER_PATH";
private static final String FILE_TEXT_EXT = ".xml";
public static void main(String args[]) {
new FindCertainExtension().listFile(FILE_DIR, FILE_TEXT_EXT);
}
public void listFile(String folder, String ext) {
GenericExtFilter filter = new GenericExtFilter(ext);
File dir = new File(folder);
if(dir.isDirectory()==false){
System.out.println("Directory does not exists : " + FILE_DIR);
return;
}
// list out all the file name and filter by the extension
String[] list = dir.list(filter);
if (list.length == 0) {
System.out.println("no files end with : " + ext);
return;
}
for (String file : list) {
String temp = new StringBuffer(FILE_DIR).append(File.separator)
.append(file).toString();
System.out.println("file : " + temp);
}
}
// inner class, generic extension filter
public class GenericExtFilter implements FilenameFilter {
private String ext;
public GenericExtFilter(String ext) {
this.ext = ext;
}
public boolean accept(File dir, String name) {
return (name.endsWith(ext));
}
}
}
希望有所帮助......
答案 5 :(得分:0)
我能想到的最简单的代码:
File dir = new File(xmlFilesDirectory);
File[] files = dir.listFiles((d, name) -> name.endsWith(".xml"));
然后,您可以检查是否存在任何类似的xml文件:
if(files.length == 0) {
/* Do Something */
} else {
/* do something else */
}