Module: System.FilePath

Table of Contents

  • Index
  • Repository
  • 1 System.FilePath

    A library for FilePath manipulations, using Posix style paths on all platforms. Importing System.FilePath is usually better. (Documentation)

    Examples:

    >>> import qualified System.FilePath as SF
    >>> import System.FilePath  ((<.>), (</>))
    >>> 
    
    >>> 
    -- Type tab to complete 
    --
    >>> SF.
    SF.-<.>                       SF.hasTrailingPathSeparator   SF.replaceExtension
    SF.<.>                        SF.isAbsolute                 SF.replaceFileName
    SF.</>                        SF.isDrive                    SF.searchPathSeparator
    SF.FilePath                   SF.isExtSeparator             SF.splitDirectories
    SF.addExtension               SF.isPathSeparator            SF.splitDrive
    SF.addTrailingPathSeparator   SF.isRelative                 SF.splitExtension
    SF.combine                    SF.isSearchPathSeparator      SF.splitExtensions
    SF.dropDrive                  SF.isValid                    SF.splitFileName
    SF.dropExtension              SF.joinDrive                  SF.splitPath
    SF.dropExtensions             SF.joinPath                   SF.splitSearchPath
    SF.dropFileName               SF.makeRelative               SF.takeBaseName
    SF.dropTrailingPathSeparator  SF.makeValid                  SF.takeDirectory
    SF.equalFilePath              SF.normalise                  SF.takeDrive
    SF.extSeparator               SF.pathSeparator              SF.takeExtension
    SF.getSearchPath              SF.pathSeparators             SF.takeExtensions
    SF.hasDrive                   SF.replaceBaseName            SF.takeFileName
    SF.hasExtension               SF.replaceDirectory
    >>> 
    
    >>> :info SF.FilePath 
    type FilePath = String  -- Defined in ‘GHC.IO’
    >>> 
    
    >>> SF.pathSeparator
    '/'
    >>> 
    
    >>> SF.pathSeparators
    "/"
    >>> 
    
    >>> SF.splitExtension "/boot/grub/grub.cfg"
    ("/boot/grub/grub",".cfg")
    >>> 
    
    >>> SF.takeExtension "/boot/grub/grub.cfg"
    ".cfg"
    >>> 
    
    >>> SF.takeExtension "/boot/grub/grub"
    ""
    >>> 
    
    >>> SF.replaceExtension  "/boot/grub/grub.cfg" ".bin"
    "/boot/grub/grub.bin"
    >>> 
    
    >>> SF.replaceExtension  "/boot/grub/grub" ".bin"
    "/boot/grub/grub.bin"
    >>> 
    >>> SF.replaceExtension  "/boot/grub/grub.tar.gz" ".bin"
    "/boot/grub/grub.tar.bin"
    >>> 
    
    >>> SF.dropExtension  "/boot/grub/grub.cfg" 
    "/boot/grub/grub"
    >>>
    
    
    >>> SF.hasExtension  "/boot/grub/grub.cfg" 
    True
    >>> SF.hasExtension  "/boot/grub/grub" 
    False
    >>> 
    
    --  Add an extension, even if there is already one there, equivalent
    --  to addExtension.
    --
    
    >>> "/etc/grub" <.> ".cfg"
    "/etc/grub.cfg"
    >>> 
    
    >>> SF.takeFileName "/boot/grub/grub.cfg" 
    "grub.cfg"
    >>> 
    
    >>> SF.replaceFileName   "/boot/grub/grub.cfg" "dummy.tar.gz"
    "/boot/grub/dummy.tar.gz"
    >>> 
    
    >>> SF.dropFileName   "/boot/grub/grub.cfg" 
    "/boot/grub/"
    >>> 
    
    >>> SF.takeBaseName    "/boot/grub/grub.cfg" 
    "grub"
    >>> 
    
    -- Get the directory name, move up one level.
    --
    >>> SF.takeDirectory   "/boot/grub/grub.cfg" 
    "/boot/grub"
    >>> 
    
    >>> SF.takeDirectory   "~" 
    "."
    >>> SF.takeDirectory   "/" 
    "/"
    >>> SF.takeDirectory   "." 
    "."
    >>> SF.takeDirectory   ".." 
    "."
    >>> 
    
    --  Set the directory, keeping the filename the same.
    --
    >>> SF.replaceDirectory  "/boot/grub/grub.cfg" "~"
    "~/grub.cfg"
    >>> 
    
    -- Join Path 
    --
    >>> SF.combine "/boot/" "grub/grub.cfg"
    "/boot/grub/grub.cfg"
    >>> 
    
    >>> SF.combine "/boot/" "/grub/grub.cfg"
    "/grub/grub.cfg"
    >>> 
    
    >>> SF.combine "/boot" "grub/grub.cfg"
    "/boot/grub/grub.cfg"
    >>> 
    
    -- Operator to Join Path 
    --
    >>> :t (</>)
    (</>) :: FilePath -> FilePath -> FilePath
    >>> 
    
    >>> "/boot" </> "grub/grub.cfg"
    "/boot/grub/grub.cfg"
    >>> 
    
    
    
    >>> SF.splitPath "/boot/grub/grub.cfg"
    ["/","boot/","grub/","grub.cfg"]
    >>> 
    
    >>> SF.joinPath ["/","boot/","grub/","grub.cfg"]
    "/boot/grub/grub.cfg"
    >>> 
    
    
    >>> SF.splitDrive "/boot/grub/grub.cfg"
    ("/","boot/grub/grub.cfg")
    >>> 
    
    -- (Running in Linux)
    --
    >>> SF.splitDrive "C:\\boot\\grub\\grub.cfg"
    ("","C:\\boot\\grub\\grub.cfg")
    >>>
    

    Author: nobody

    Created: 2018-05-07 Mon 10:12

    Emacs 25.3.1 (Org mode 8.2.10)

    Validate