【问题标题】:Is there a platform-independent way to check if a file path is some representation of a root directory in Haskell?是否有一种独立于平台的方法来检查文件路径是否是 Haskell 中根目录的某种表示?
【发布时间】:2022-06-15 08:01:18
【问题描述】:

在 Haskell 中,是否有一种可移植的方式来检查 FilePath 是否是根目录,例如/// 在 Unix/POSIX/Linux 上,C:\\\?\UNC\Foobar 在 Windows/NT/DOS 上?我检查了directoryfilepath 包,但我找不到这个功能。

【问题讨论】:

  • 如果\\?\UNC\Foobar\Share 是根目录,那么像/proc 这样的挂载点也可以吗?
  • 我能找到的最接近的是getHomeDirectory,它返回用户的主目录;我不知道有任何函数以与系统无关的方式返回根目录
  • @thatotherguy 抱歉,我解决了这个问题。我的意思是 \\?\UNC\Foobar。
  • 更具体地说,我的意思是一条不能进一步简化的路径,同时仍然指代某些东西。 /proc 肯定可以简化为// 本身不能。
  • “不能减少”与根的概念不太匹配。像foo 这样的相对路径也不能减少,除非先使其成为绝对路径,但它不是根。

标签: linux windows haskell path


【解决方案1】:

我在base 中看不到任何内容,但似乎有一个filepath 库,其中包含isDrive :: FilePath -> Bool 等函数。它指出,在 POSIX 上,/ 被认为是唯一的“驱动器”。此函数的行为方式似乎符合您的期望(向上滚动到 splitDrive 的文档以了解涉及 UNC 的示例)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 2021-06-27
    • 2021-12-19
    相关资源
    最近更新 更多