file.getFileName()。endsWith()未检测到.mp3 - java

我可能缺少一些小东西,但找不到。使用file.getFileName()。endsWith(“。mp3”),布尔值始终为false。如果我将te文件重命名为* .mp并将代码更改为endsWith(“。mp”),则会找到它们。这里会发生什么?

问候,
耶尔茂

编辑:文件是一个路径对象顺便说一句。

档案名称:

/home/jelmer/Music/01 - Nightwish - Shudder Before The Beautiful.mp3
/home/jelmer/Music/02 - Nightwish - Weak Fantasy.mp3
/home/jelmer/Music/03 - Elan (Album Version).mp3
/home/jelmer/Music/04- Nightwish - Yours Is An Empty Hope.mp3
/home/jelmer/Music/05 - Nightwish - Our Decades In The Sun.mp3
/home/jelmer/Music/06 - Nightwish - My Walden.mp3
/home/jelmer/Music/07 - Nightwish - Endless Forms Most Beautiful.mp3
/home/jelmer/Music/08 - Nightwish - Edema Ruh.mp3
/home/jelmer/Music/09 - Nightwish - Alpenglow.mp3
/home/jelmer/Music/10 - Nightwish - Eyes Of Sharbat Gula.mp3
/home/jelmer/Music/11 - Nightwish - The Greatest Show on Earth.mp3
/home/jelmer/Music/test.mp3


public class mp3Walker extends SimpleFileVisitor<Path> {

    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
        if(file.getFileName().endsWith(".mp3")) {
            System.out.println(file);
        }
        System.out.println("done with file: "+file.getFileName());
        return FileVisitResult.CONTINUE;
    }

    public static void main(String[] args) throws IOException {
        mp3Walker walker= new mp3Walker();
        Files.walkFileTree(Paths.get("/home/jelmer/Music/"), walker);
    }
}

输出:

done with file: 07 - Nightwish - Endless Forms Most Beautiful.mp3
done with file: test.mp3
done with file: 08 - Nightwish - Edema Ruh.mp3
done with file: 05 - Nightwish - Our Decades In The Sun.mp3
done with file: 02 - Nightwish - Weak Fantasy.mp3
done with file: 11 - Nightwish - The Greatest Show on Earth.mp3
done with file: 01 - Nightwish - Shudder Before The Beautiful.mp3
done with file: 10 - Nightwish - Eyes Of Sharbat Gula.mp3
done with file: 04- Nightwish - Yours Is An Empty Hope.mp3
done with file: 06 - Nightwish - My Walden.mp3
done with file: 03 - Elan (Album Version).mp3
done with file: 09 - Nightwish - Alpenglow.mp3

java参考方案

这是因为Path.endsWith()需要路径的完整元素。

那是:

Paths.get("foo").endsWith("oo")

等效于:

Paths.get("foo").endsWith(Paths.get("oo"))

总是返回false。

您要测试文件名的字符串值:

path.getFileName().toString().endsWith(".mp3")

Java检测文件系统中的更改 - java

我有一个文件夹,其中不断有新文件被转储。在Java中,什么是检测文件系统更改的最佳方法(即,要在其中转储文件的指定文件夹)并将新到达的文件添加到队列数据结构,以便我可以顺序处理每个传入文件。我知道File类中的listFiles()函数,但是使用此函数,我只能获取瞬间可用的文件。当然,我可以连续轮询文件夹并使用线程获取其中的文件列表,但这是最好的方法还是有更…

对于Java中的isDirectory和isFile,文件始终返回false - java

为什么file为isFile()方法返回false,即使它是file。当它是目录时,它为isDirectory()返回false。难道我做错了什么?我测试的这些文件/目录不存在,我需要创建它们,所以这就是为什么我要测试使用createFile()还是mkdir()的原因。File file = new File("C:/Users/John/Des…

使用JIT进行的优化是否只发生一次,并且可以永久保留,或者仅在运行的生命周期中保留? - java

我在Just-in-time compilers上阅读过不同的文章,并且提到JIT将代码片段(热点)优化为直接的本机代码(机器代码)。我的问题是每当我运行.class file时,都会发生这种优化吗?另一方面,传统的compiled代码会一劳永逸地进行优化,而不仅仅是在一个execution中进行优化。在hot-spot optimization中如何“记住…

使用流读取文本文件并保存到BigInteger数组 - java

读取文本文件,用,分割数字并将它们全部保存到BigInteger数组的正确方法是什么?BigInteger[] a = new BigInteger[1000]; try (Stream<String> stream = Files.lines(Paths.get(filePath))) { } catch (IOException e) { e…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…