A library for
FilePath manipulations, using Posix or Windows
filepaths depending on the platform.
Both
System.FilePath.Posix and
System.FilePath.Windows
provide the same interface.
Given the example
FilePath:
/directory/file.ext
We can use the following functions to extract pieces.
And we could have built an equivalent path with the following
expressions:
- "/directory" </> "file.ext".
- "/directory/file" <.> "ext".
- "/directory/file.txt" -<.> "ext".
Each function in this module is documented with several examples,
which are also used as tests.
Here are a few examples of using the
filepath functions
together:
Example 1: Find the possible locations of a Haskell module
Test imported from module
Main:
[replaceFileName path_to_main "Test" <.> ext | ext <- ["hs","lhs"] ]
Example 2: Download a file from
url and save it to
disk:
do let file = makeValid url
System.Directory.createDirectoryIfMissing True (takeDirectory file)
Example 3: Compile a Haskell file, putting the
.hi
file under
interface:
takeDirectory file </> "interface" </> (takeFileName file -<.> "hi")
References: [1]
Naming Files, Paths and Namespaces (Microsoft
MSDN)