gpt4 book ai didi

java - 空字符串数组列表

转载 作者:行者123 更新时间:2023-12-02 05:09:50 24 4
gpt4 key购买 nike

我正在编写一个简单的应用程序,它从用户指定的文件位置读取并对在那里找到的 .mp3 文件执行操作。我有一种名为 getMusicFilenames 的方法(如下),应该转到路径,查看每个文件,如果文件名以 .mp3 结尾,则将其添加到 ArrayList<String>然后最后返回列表。

    public static List<String> getMusicFilenames(Path p) {
List<String> listOfMusic = new ArrayList<>();

try (DirectoryStream<Path> stream = Files.newDirectoryStream(p)) {
for (Path file : stream) {
if (Files.isDirectory(file)) {
if (M3UFinder.isMusicFile(file.toString())) {
listOfMusic.add(file.toString());
}
}

}
} catch (Exception e) {
System.err.println("getMusicFilenames:: error with path "
+ p + ": " + e.getMessage());
}

return listOfMusic;
}

isMusicFile 方法非常简单,但可能是相关的:

    public static boolean isMusicFile(String thisFilename) {
return thisFilename.endsWith(".mp3");
}

在使用 JUnit 测试此方法时,我将测试路径设置为查看仅包含一个 .mp3 文件的特定路径,但测试失败,提示“预期 <[songtitle.mp3]> 但为:<[] >.所以显然它要么没有读取文件在那里,要么正在读取文件但没有将其添加到列表中。无论哪种方式,列表返回空,这都会导致我编写的其他方法出现问题,这一切都取决于列表上有尺寸和里面的东西。我是不是犯了一些我自己看不到的简单错误?如果它有助于显示我哪里出错了,getMusicFilenames 方法是根据我之前的类似方法改编的提供,如下所示。

    public static List<String> getPlaylistFilenames(Path p) {
List<String> listOfPlaylists = new ArrayList<>();

try (DirectoryStream<Path> stream = Files.newDirectoryStream(p)) {
for (Path file : stream) {
if (Files.isDirectory(file, LinkOption.NOFOLLOW_LINKS)) {
listOfPlaylists.addAll(getPlaylistFilenames(file));
} else if (M3UReader.isValidHeader(file.toString())) {
listOfPlaylists.add(file.toString());
}
}
} catch (Exception e) {
System.err.println("getPlaylistFilenames:: error with path "
+ p + ": " + e.getMessage());
}

return listOfPlaylists;
}

非常感谢任何帮助/提示。

最佳答案

这里缺少感叹号if (Files.isDirectory(file))

应该是if (!Files.isDirectory(file))

关于java - 空字符串数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27425348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com