diff options
Diffstat (limited to 'copyFile.hs')
-rw-r--r-- | copyFile.hs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/copyFile.hs b/copyFile.hs new file mode 100644 index 0000000..0835b0e --- /dev/null +++ b/copyFile.hs @@ -0,0 +1,21 @@ +import System.Environment +import System.Directory +import System.IO +import Control.Exception +import qualified Data.ByteString.Lazy as B + +main = do + (fileName1:fileName2:_) <- getArgs + copy fileName1 fileName2 + +copy source dest = do + contents <- B.readFile source + bracketOnError + (openTempFile "." "temp") + (\(tempName, tempHandle) -> do + hClose tempHandle + removeFile tempName) + (\(tempName, tempHandle) -> do + B.hPutStr tempHandle contents + hClose tempHandle + renameFile tempName dest) |