java - 如何检测文件(具有任何扩展名)是否存在于java中

标签 java file file-io

我正在文件夹中搜索声音文件,想知道声音文件是否存在,可能是 .mp3、.mp4 等。我只想确保文件名(不带扩展名)存在。

eg.文件搜索/home/user/desktop/sound/a

如果存在 a.mp3 或 a.mp4 或 a.txt 等,则返回找到。

我试过这个:

File f=new File(fileLocationWithExtension);

if(f.exist())
   return true;
else return false;

但在这里我还必须传递扩展名,否则它总是返回 false

对于来到这里的任何人来说,这是我想出的最好的方法

    public static void main(String[] args) {
    File directory=new File(your directory location);//here /home/user/desktop/sound/
    final String name=yourFileName;  //here a;
            String[] myFiles = directory.list(new FilenameFilter() {
                public boolean accept(File directory, String fileName) {
                    if(fileName.lastIndexOf(".")==-1) return false;
                    if((fileName.substring(0, fileName.lastIndexOf("."))).equals(name))
                        return true;
                    else return false;
                }
            });
   if(myFiles.length()>0)
       System.Out.println("the file Exist");
}

缺点:即使找到了我在问题中从未想过的文件,它也会继续搜索。欢迎任何建议

最佳答案

这段代码可以解决问题..

public static void listFiles() {

        File f = new File("C:/"); // use here your file directory path
        String[] allFiles = f.list(new MyFilter ());
        for (String filez:allFiles ) {
            System.out.println(filez);
        }
    }
}
        class MyFilter implements FilenameFilter {
        @Override
        //return true if find a file named "a",change this name according to your file name
        public boolean accept(final File dir, final String name) {
            return ((name.startsWith("a") && name.endsWith(".jpg"))|(name.startsWith("a") && name.endsWith(".txt"))|(name.startsWith("a") && name.endsWith(".mp3")|(name.startsWith("a") && name.endsWith(".mp4"))));

        }
    }

以上代码将找到名称为a的文件列表。
我在这里使用了 4 个扩展来测试(.jpg,.mp3,.mp4,.txt)。如果您需要更多,只需将它们添加到 boolean accept() 方法中。

编辑:
这是 OP 想要的最简化版本。

public static void filelist()
    {
        File folder = new File("C:/");
        File[] listOfFiles = folder.listFiles();

    for (File file : listOfFiles)
    {
        if (file.isFile())
        {
            String[] filename = file.getName().split("\\.(?=[^\\.]+$)"); //split filename from it's extension
            if(filename[0].equalsIgnoreCase("a")) //matching defined filename
                System.out.println("File exist: "+filename[0]+"."+filename[1]); // match occures.Apply any condition what you need
        }
     }
}

输出:

File exist: a.jpg   //These files are in my C drive
File exist: a.png
File exist: a.rtf
File exist: a.txt
File exist: a.mp3
File exist: a.mp4

此代码检查路径中的所有文件。它将所有 文件名 从它们的扩展名中拆分出来。最后,当与定义的 文件名 发生匹配时,它将打印那个文件名

关于java - 如何检测文件(具有任何扩展名)是否存在于java中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17697646/

相关文章:

java - Box2D 在碰撞后阻止动态物体移动

regex - 从文件中提取电话号码

iOS : NSFileManager copyItemAtPath is memory intensive

exception - Haskell - 检查文件句柄的有效性

java - Google Cloud Endpoints 限制...任何建议的解决方案?

java - 通过重定向在 java web 服务器和 php web 服务器之间传递属性

java - 如何将查询存储在 MongoDB 集合中以便动态执行它们?

windows - 使用 WMI 查询扩展文件属性

PHP 读取 xlsx Excel 2007 文件

file - 使用 GWT 列出目录中的文件