Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在目录中搜索任何.XML文件_Java_Xml_Java Io - Fatal编程技术网

Java 在目录中搜索任何.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

我正在尝试让一段代码正常工作。目的是检查某个目录中是否有.XML文件

这就是我到目前为止得到的

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
。。。已尝试???@HirenPandya
f
不会为
null
,它被分配到
新文件(“saves/*.xml”)仅在上面一行。这并不意味着该文件存在,但
f
不会为
null
@jlordo。。让我把它作为一个文件对象。如果提到的目录不包含任何指定的文件。那么
f
应该包含
null
。。。我哪里错了?@HirenPandya是的,你错了
f
引用的是
文件
对象,而不是
null
。由存储在该对象中的抽象路径名表示的文件是否存在是另一个问题。只需运行以下代码:
filef=newfile(“DOESNOTEXIST”);如果(f!=null){System.out.println(“f不是null”);}
最好检查
f
是否为
null
。。。已尝试???@HirenPandya
f
不会为
null
,它被分配到
新文件(“saves/*.xml”)仅在上面一行。这并不意味着该文件存在,但
f
不会为
null
@jlordo。。让我把它作为一个文件对象。如果提到的目录不包含任何指定的文件。那么
f
应该包含
null
。。。我哪里错了?@HirenPandya是的,你错了
f
引用的是
文件
对象,而不是
null
。由存储在该对象中的抽象路径名表示的文件是否存在是另一个问题。只需运行以下代码:
filef=newfile(“DOESNOTEXIST”);如果(f!=null){System.out.println(“f不是null”);}