2
ファイルを開き、最初の行をスキップします。これは私が思いついたものです:行をスキップしてファイルを開くより良い方法はありますか?
h :: IO Handle
h = do h' <- openFile "foo.dat" ReadMode
_ <- hGetLine h'
return h'
これを行うには良い方法がありますか?
ファイルを開き、最初の行をスキップします。これは私が思いついたものです:行をスキップしてファイルを開くより良い方法はありますか?
h :: IO Handle
h = do h' <- openFile "foo.dat" ReadMode
_ <- hGetLine h'
return h'
これを行うには良い方法がありますか?
hSeek
という機能があります。後で説明する機能があります。
http://hackage.haskell.org/package/base-4.9.1.0/docs/System-IO.html#v:hSeek
ことがGHCiのを使用しての実験を持って、私はお勧めします。
それが良いかどうかはわかりませんが、これは1つの選択肢です(あなたが別のもののハンドルを必要としないと仮定した場合)。 lines <$> readFile "foo.dat" ' – Erik
これは仕様を満たしていません。私はここでファイル全体を読んでみたくない。 2行目を指すハンドルを持っていたい。残りのファイルを読むことはまったく別の問題です。 –
@MichaelLitchardでも、 'ReadMode'ではすべてあなたができることは、実際には_readです。とにかく。そして、実際には 'readFile'を使ってファイルを文字列に読み込み、IOで処理するのが最も良い方法です。プレーンな文字列データを処理するためには、副作用を心配するよりもずっと良いです。 - これは、プログラムがそこで停止して、ファイルの内容全体が処理されるまで待機する必要はないことに注意してください。つまり、実際に必要な行のみが読み込まれます。これはいくつかの厄介な驚きを引き起こす可能性もありますが、すべて厳密に読む方が安全です。 – leftaroundabout