【问题标题】:Clean3.0 get directory contentsClean3.0 获取目录内容
【发布时间】:2019-03-07 12:54:37
【问题描述】:

我将 Cleanide 用于 Clean3.0 编程语言。 我要做的是实现一个函数,它接收系统中目录的名称,并返回该目录中所有文件的列表。

我不知道这样的函数的定义是否需要像File -> [string]或者别的什么,即使那个目录是一个文件也许这不是Clean的开发者的意思......

非常感谢!

【问题讨论】:

    标签: clean-language


    【解决方案1】:

    此功能在 StdEnv 环境中不可用,但有两个库可以帮助解决此问题:

    • Directory 库包含一个模块 Directory,它有一个函数 getDirectoryContents :: !Path !*env -> (!(!DirError, [DirEntry]), !*env) | FileSystem env

    • Platform 库包含一个模块 System.Directory,它有一个函数 readDirectory :: !FilePath !*w -> (!MaybeOSError [FilePath], !*w)

    在这两种情况下,第一个参数是目录路径,第二个参数是 *World,这是 Clean 执行不纯操作的典型方式(参见 chapter 9the language report)。

    代码示例

    有目录:

    import Directory
    
    Start w
    # (dir,w) = getDirectoryContents (RelativePath []) w
    = dir
    

    有平台:

    import System.Directory
    
    Start w
    # (dir,w) = readDirectory "." w
    = dir
    

    【讨论】:

    • 非常感谢。请考虑我是初学者的事实,您可以发布代码示例吗?
    • @ZENir 我已经用两个模块的示例更新了答案。
    • 谢谢。我仍然不确定如何获取特定目录的内容。假设"C:\Users\User\myDir"你能帮我吗?
    • @ZENir 您将使用它作为第一个参数。所以例如"C:\\Users\\User\\myDir" 用于平台或AbsolutePath "C" [PathDown "Users",PathDown "User",PathDown "myDir"] 用于目录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 2016-05-28
    • 1970-01-01
    相关资源
    最近更新 更多