2011-07-05 14 views

答えて

0

ファイルの内容を取得しないでください。

適切なことは、ファイルを開いて編集して閉じることです。 getContentメソッドは、あなたのコンテンツを取得し、それ以外は何もしません。

擬似コード::

オープン(場合によっては)ファイル

読む/追加ファイル


ファイルを閉じます。ここドキュメントは http://haskell.org/ghc/docs/latest/html/libraries/base/System-IO.html

です
+0

変更する前に、ファイルの内容を確認する必要があります。 –

+0

getcontent funcを使用して、ファイルを開く、追加して閉じる前にファイルの内容を表示します。 – Mob

1

多分次のようなものです:

import System.IO 

modifyFile :: FilePath -> (String -> String) -> IO() 
modifyFile fn func = do 
    str <- readFile fn 
    length str `seq` return() 
    appendFile fn (func str) 

SEQコールが完全に読み込まれるファイルを強制的に、我々は(または書き込みに失敗した)、それに追加して再オープンする前に、ファイルを閉じました。

これはすばやく汚れています。もっと精巧なことをしたい場合は、System.IO.hSeekと関連する関数を調べることができます。例えば。それを開いて、それを読んで、最後を追い求めて、追加してください。

0

hGetContentsは、ファイルハンドルをクローズ(または半クロージング)するので、他の操作には使用できなくなっています。 1つのオプションは、ファイルを読み込んだ後に追加するために新しいハンドルを取得し、それを追加のために使用することですが、何らかの理由でファイルの内容を完全に再処理する前に処理しないと予期しない動作が発生する可能性があります。

もう1つの方法は、ファイルの末尾に到達するまでhGetLine(データが行ベースの場合)を使用して、別の方法で内容を読み取って内容を読み取ることです。同じハンドル。

関連する問題