FilePath

File and directory names are values of type String, whose precise meaning is operating system dependent. Files can be opened, yielding a handle which can then be used to operate on the contents of that file.
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)
Internal stuff: support for ByteString FilePaths
Internal stuff: support for ByteString FilePaths
A module for FilePath operations exposing System.FilePath plus some additional operations. Windows note: The extension methods (<.>, takeExtension etc) use the Posix variants since on Windows "//*" <.> "txt" produces "//*\\.txt" (which is bad for FilePattern values).
FilePath is a collection of FileName TODO: Eq and Ord are implemented using Show This is not very efficient and would need to be improved Also, it is possible the ordering is not necessary what we want in this case. A FilePath is one of the following:
  • An Absolute:
  • starts with one of the follwing "/"
  • A relative:
  • don't start with a "/"
  • authorised:
  • "/"
  • "filepath"
  • "."
  • ".."
  • "workhaskellhs-foundation"
  • unauthorised
  • "path//"
# Opaque implementation for FilePath The underlying type of a FilePath is a ByteArray. It is indeed like this because for some systems (Unix systems) a FilePath is a null terminated array of bytes. # FilePath and FileName for type checking validation In order to add some constraint at compile time, it is not possible to append (</>) a FilePath to another FilePath. You can only append (</>) a FileName to a given FilePath.
Deprecated: Use Path.File instead.
The equivalent of System.FilePath on raw (byte string) file paths. Not all functions of System.FilePath are implemented yet. Feel free to contribute!
Hole containing a filepath for a data file
Utilities for dealing with YAML config files which contain relative file paths.
Library for manipulating FilePaths in a cross platform way. This package provides functionality for manipulating FilePath values, and is shipped with GHC. It provides two variants for filepaths:
  1. legacy filepaths: type FilePath = String
  2. operating system abstracted filepaths (OsPath): internally unpinned ShortByteString (platform-dependent encoding)
It is recommended to use OsPath when possible, because it is more correct. For each variant there are three main modules: For more powerful string manipulation of OsPath, you can use the os-string package (OsPath is a type synonym for OsString). An introduction into the new API can be found in this blog post. Code examples for the new API can be found here.
Return the name of the file being visited.
Extract the AbsolutePath to be used as FilePath.
Gets the local pathname for File, if one exists. This call does no blocking i/o.
Deprecated: Use Path.file instead.