通过目录搜索

时间:2014-10-02 21:09:08

标签: java file search directory

您好我正在处理的程序的一部分需要能够搜索目录。我理解如何使用路径变量以及如何到达目录;但是一旦你在目录中,你如何区分文件?我们可以创建目录中包含的文件的数组/或链接列表并使用它进行搜索吗?

在这个特定的程序中,目标是让用户输入一个目录,从那里进入子目录并找到以.mp3结尾的文件并将其复制到新用户创建的目录。可以肯定的是,文件夹中只有一个.mp3文件。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

看到你说的话,我想你会使用java7 Path api。

要知道路径是目录还是简单文件,请使用Files.isDirectory(Path)

要列出目录中的文件/目录,请使用Files.list(Path)

Files类的javadoc:http://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html

如果您使用" old" java.io.File api,然后你有一个listFiles方法,它可以将FileFilter作为参数来过滤,例如,只有以" .mp3"结尾的文件。

祝你好运

答案 1 :(得分:0)

您可以使用File对象来表示您的目录,然后使用listFiles()(返回文件数组File[])将文件检索到该目录中。

如果您需要搜索子目录,可以递归使用listFiles()为您遇到的每个目录。

对于文件扩展名,Apache Commons IO库有一个整洁的FileFilterSuffixFileFilter

答案 2 :(得分:0)

按原样获取文件:

List<String> results = new ArrayList<String>();
File[] files = new File("/path/to/the/directory").listFiles();
for (File file : files) 
    if (file.isFile()) 
        results.add(file.getName());

如果你想要扩展名:

public static String getExtension(String filename){
    String extension = "";
    int i = fileName.lastIndexOf('.');
    if (i > 0) 
        extension = fileName.substring(i+1);
    return extension;
}

还有其他方法可以获取文件扩展名listed here,但它们通常需要一个通用的外部库。