wvogel日記

自分用の技術備忘録が多めです.

Directory(2)

コメントをいただき、ファイル削除の方法がわかりましたので、
さっそく、コマンドオプションでrecursiveが使えるように、rmプログラムを修正。
自分で高階関数作ったのは初めてかも。

import Directory
import System.Environment

main = do command <- getArgs
          flist <- getDirectoryContents "."
          switch flist command

switch :: [FilePath] -> [FilePath] -> IO()
switch _ [] = print " ! filename which you are to delete"
switch flist [f] = remove removeFile flist f
switch flist (f:fs) = if head fs == "recursive"
                       then remove removeDirectory flist f
                       else print "command is wrong"

remove :: (FilePath -> IO()) -> [FilePath] -> FilePath -> IO()
remove f flist fname = case any (==fname) flist of
                        True -> f fname
                        False-> print $ fname++" isn't exist."


これでファイル削除なども出来るようになったので、そろそろ統一ファイル管理システムを作りたいなと思うのですが、いい構想が思いつかない.....
考えているのは、
ファイル探索
フォルダ作成
ファイル削除
名前変更
ソート出力
など?