Java 在目录中搜索任何.XML文件
我正在尝试让一段代码正常工作。目的是检查某个目录中是否有.XML文件 这就是我到目前为止得到的Java 在目录中搜索任何.XML文件,java,xml,java-io,Java,Xml,Java Io,我正在尝试让一段代码正常工作。目的是检查某个目录中是否有.XML文件 这就是我到目前为止得到的 File f = new File("saves/*.xml"); if(f.exists()) { /* Do Something */ } else { /* do something else */ } 我正在尝试使用通配符搜索任何以.XML结尾的文件,我是否遗漏了一些简单的内容?是否有更简单的方法来检查指定目录中是否至少存在一个.XM
File f = new File("saves/*.xml");
if(f.exists()) {
/* Do Something */
} else {
/* do something else */
}
我正在尝试使用通配符搜索任何以.XML结尾的文件,我是否遗漏了一些简单的内容?是否有更简单的方法来检查指定目录中是否至少存在一个.XML文件
提前感谢。备选方案1: 您可以使用来使用特定模式搜索文件 备选方案2:
您也可以使用备选方案1: 您可以使用来使用特定模式搜索文件 备选方案2: 您也可以使用您可以使用:
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文件都位于文件[]xmlFiles
中,您可以使用以下内容:
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文件都位于
文件[]xmlFiles
中。您需要使用路径匹配器,例如:
PathMatcher matcher =
FileSystems.getDefault().getPathMatcher("glob:*.{xml}");
Path filename = ...;
if (matcher.matches(filename)) {
System.out.println(filename);
}
来自Oracle文档。如果你想知道什么是地球仪:它被解释了 您需要使用路径匹配器,例如:
PathMatcher matcher =
FileSystems.getDefault().getPathMatcher("glob:*.{xml}");
Path filename = ...;
if (matcher.matches(filename)) {
System.out.println(filename);
}
来自Oracle文档。如果你想知道什么是地球仪:它被解释了 您可以尝试使用此代码作为参考
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));
}
}
}
希望对您有所帮助。您可以尝试使用此代码作为参考
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));
}
}
}
希望有帮助。将筛选部分与搜索路径分离,并使用文件名筛选器列出搜索路径中的文件,仅筛选xml文件。如果列表大小大于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 */
}
}
将筛选器部分与搜索路径分离,并使用文件名筛选器列出搜索路径中的文件,仅筛选xml文件。如果列表大小大于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 */
}
}
我能想到的最简单的代码是:
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 */
}
我能想到的最简单的代码是:
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 */
}
最好检查
f
是否为NULL
。。。已尝试???@HirenPandyaf
不会为null
,它被分配到新文件(“saves/*.xml”)代码>仅在上面一行。这并不意味着该文件存在,但f
不会为null
@jlordo。。让我把它作为一个文件对象。如果提到的目录不包含任何指定的文件。那么f
应该包含null
。。。我哪里错了?@HirenPandya是的,你错了f
引用的是文件
对象,而不是null
。由存储在该对象中的抽象路径名表示的文件是否存在是另一个问题。只需运行以下代码:filef=newfile(“DOESNOTEXIST”);如果(f!=null){System.out.println(“f不是null”);}
最好检查f
是否为null
。。。已尝试???@HirenPandyaf
不会为null
,它被分配到新文件(“saves/*.xml”)代码>仅在上面一行。这并不意味着该文件存在,但f
不会为null
@jlordo。。让我把它作为一个文件对象。如果提到的目录不包含任何指定的文件。那么f
应该包含null
。。。我哪里错了?@HirenPandya是的,你错了f
引用的是文件
对象,而不是null
。由存储在该对象中的抽象路径名表示的文件是否存在是另一个问题。只需运行以下代码:filef=newfile(“DOESNOTEXIST”);如果(f!=null){System.out.println(“f不是null”);}