【问题标题】:What does getNameCount() actually count?getNameCount() 实际上算什么?
【发布时间】:2014-06-17 13:18:52
【问题描述】:

我的问题有两个部分 - 首先,标题到底是什么 - Path.getNameCount() 方法实际计数的是什么?当您在 Eclipse 中选择方法时,我阅读了它附带的小弹出信息,我认为这是一个合适的用法。我使用它创建的这个方法在运行时返回 5 作为 int。其次,我尝试要做的是返回目标目录中有多少文件,这样我就可以运行另一个方法,我必须多次检索文件名。如果 getNameCount() 方法不适用于此功能,您对如何实现相同目的有什么建议吗?

//Global Variable for location of directory
Path dir = FileSystems.get("C:\\Users\\Heather\\Desktop\\Testing\\Testing2");
//Method for collecting the count of the files in the target directory.
public int Count()
{
    int files=0;
    files = dir.getNameCount();
    return files;
}
}

【问题讨论】:

  • FileSystems.getDefault().getPath 应替换为 Paths.get

标签: java path filenames


【解决方案1】:

getNameCount() 返回路径(子目录)中的元素数。例如,在 Windows 中,“C:”为 0,而“C:\a\b\c” - 3,在类 Unix 系统中,根(“/”)为 0 级(@ 987654324@) 和 "/home/user/abacaba" 将在第 3 级,请参阅javadoc

要列出目录,您应该使用DirectoryStreamjavadoc - 这里给出了完美的例子。

【讨论】:

    【解决方案2】:

    作为documentedgetNameCount() 返回:

    路径中元素的数量,如果此路径仅表示根组件,则为 0

    因此,在您的情况下,元素是 "Users""Heather""Desktop""Testing""Testing2" - 不是目录中文件的名称。 p>

    要列出目录中的文件,您可以使用Files.list(Path)(Java 8+)或Files.newDirectoryStream(Path)(Java 7+)。或者您可以转换为File 并使用“老派”File.listFiles() 方法等。

    【讨论】:

    • Files.list 仅从 Java 8 开始出现,请提及。
    • @DmitryGinzburg:完成,有多种选择。
    【解决方案3】:

    它返回路径中元素的数量。

    查看Oracle Docs

    例子:-

    Path path = Paths.get("C:", "tutorial/Java/JavaFX", "Topic.txt");
    
    System.out.println(path.getNameCount());
    

    返回:

    4
    

    【讨论】:

    • 可能是因为您的原始答案提到了“子文件夹中的元素数”,这有点令人困惑(文件夹中的文件数?)。
    • @assylias:- 但现在我已经更新了它,并且在它被否决时我正在更新我的答案。我试图添加一个例子:(
    • 仅供参考,无论谁对您投了反对票,都无法删除其反对票,因为您在 5 分钟内完成了所有更改。您应该再次进行小修改以解锁您的帖子。
    • @assylias:- 做到了! :)
    猜你喜欢
    • 2018-11-29
    • 1970-01-01
    • 2021-05-12
    • 2011-08-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    相关资源
    最近更新 更多