如何在 Haskell 中创建文件及其父目录?
How to create a file and its parent directories in Haskell?
我想通过重要路径将内容写入文件并创建所有父目录(如果它们不存在)。所以下面的代码:
mkFile "foo/bar/baz/quux.txt"
将创建所有目录 foo/
、foo/bar/
和 foo/bar/baz/
(如果它们不存在)(当然还有文件 quux.txt
)。实现这种功能最简单的方法是什么?理想情况下,我希望看到一个仅使用 directory
和 filepath
库的解决方案。
我正在尝试为此找到最简单的方法,但找不到任何方法。
唯一的办法就是根据你的需要实现我们自己的功能。
幸运的是,这仅使用 System.Directory
和 System.FilePath.Posix
库。
import Prelude
import System.Directory (createDirectoryIfMissing)
import System.FilePath.Posix (takeDirectory)
main :: IO ()
main = createAndWriteFile "foo/bar/baz/quux.txt" "something"
createAndWriteFile :: FilePath -> String -> IO ()
createAndWriteFile path content = do
createDirectoryIfMissing True $ takeDirectory path
writeFile path content
下面是基于上面代码的结果。
foo
└── bar
└── baz
└── quux.txt
您可以随意编辑代码。
我想通过重要路径将内容写入文件并创建所有父目录(如果它们不存在)。所以下面的代码:
mkFile "foo/bar/baz/quux.txt"
将创建所有目录 foo/
、foo/bar/
和 foo/bar/baz/
(如果它们不存在)(当然还有文件 quux.txt
)。实现这种功能最简单的方法是什么?理想情况下,我希望看到一个仅使用 directory
和 filepath
库的解决方案。
我正在尝试为此找到最简单的方法,但找不到任何方法。
唯一的办法就是根据你的需要实现我们自己的功能。
幸运的是,这仅使用 System.Directory
和 System.FilePath.Posix
库。
import Prelude
import System.Directory (createDirectoryIfMissing)
import System.FilePath.Posix (takeDirectory)
main :: IO ()
main = createAndWriteFile "foo/bar/baz/quux.txt" "something"
createAndWriteFile :: FilePath -> String -> IO ()
createAndWriteFile path content = do
createDirectoryIfMissing True $ takeDirectory path
writeFile path content
下面是基于上面代码的结果。
foo
└── bar
└── baz
└── quux.txt
您可以随意编辑代码。