Cookbook/Files
From HaskellWiki
(Difference between revisions)
(creating a temporary file) |
|||
| Line 37: | Line 37: | ||
= Creating a temporary file = | = Creating a temporary file = | ||
| - | TODO | + | TODO: abstract via 'withTempFile', handle exception |
| + | |||
| + | <haskell> | ||
| + | import System.IO | ||
| + | import System.Directory | ||
| + | |||
| + | main = do | ||
| + | tmpDir <- getTemporaryDirectory | ||
| + | (tmpFile, h) <- openTempFile tmpDir "foo" | ||
| + | hPutStr h "Hello world" | ||
| + | hClose h | ||
| + | removeFile tmpFile | ||
| + | </haskell> | ||
= Writing a filter = | = Writing a filter = | ||
Revision as of 16:47, 24 April 2009
Contents |
1 Reading from a file
The System.IO library contains the functions needed for file IO. The program below displays the contents of the file c:\test.txt.
import System.IO main = do h <- openFile "c:\\test.txt" ReadMode contents <- hGetContents h putStrLn contents hClose h
The same program, with some higher-lever functions:
main = do contents <- readFile "c:\\test.txt" putStrLn contents
2 Writing to a file
The following program writes the first 100 squares to a file:
-- generate a list of squares with length 'num' in string-format. numbers num = unlines $ take num $ map (show . \x -> x*x) [1..] main = do writeFile "test.txt" (numbers 100) putStrLn "successfully written"
appendFile
3 Creating a temporary file
TODO: abstract via 'withTempFile', handle exception
import System.IO import System.Directory main = do tmpDir <- getTemporaryDirectory (tmpFile, h) <- openTempFile tmpDir "foo" hPutStr h "Hello world" hClose h removeFile tmpFile
4 Writing a filter
Using interact, you can easily do things with stdin and stdout.
A program to sum up numbers:
main = interact $ show . sum . map read . lines
A program that adds line numbers to each line:
main = interact numberLines numberLines = unlines . zipWith combine [1..] . lines where combine lineNumber text = concat [show lineNumber, " ", text]
5 Logging to a file
TODO
