プログラミングの勉強の中でファイルの読み込み、書き込みは基本です。
以後、ファイルの読み込み、書き込みをファイルIOと呼びます。
I は input いわゆる入力(読み込み)です。
O は output いわゆる出力(書き込み)です。
このファイルIOをする中で、ストリームで読み込み、書き込みを行う方が良いという話があります。
今回は、ストリームとは何か?
ストリームを使用するとどのようなメリットがあるかを紹介します。
ファイルストリーム
読み込みストリーム
ストリームを使用したファイルの読み込みは、ファイルの内容を一定量ずつ読み、読み込んだファイルの内容はメモリに保存されていきます。
書き込みに関しても一定量ずつ書き込みを行います。
メリット
非同期
ファイルの読み込み中でも、他のことが行えます。
メモリの効率化
非同期であることを生かして、読み込み中のものを他のファイルへストリームを使用して書き込みを行うことで、メモリ消費を一定に保つことが出来ます。いわゆる、インプットしたものを即座にアウトプットすれば、多くのメモリも消費されずに済みます。
ストリームを使わない場合
ストリームを使用する場合、ファイル読み込み中に他の処理が行えますが、ストリームを使用しない場合、ファイルの読み込みが終わるまで他の処理が行えません。従って、メモリもファイルのサイズ分消費されます。例えば10Gのファイルを読み込むとします。10Gのファイルの読み込みが完了するまで待たないといけません。ファイルの読み込みが終わる頃にはメモリが10G消費されます。
さらにパソコンのメモリが4Gだった場合どうでしょう。メモリがオーバーフローしてしまいますね。
ストリームを使用すれば、ファイル読み込み中に他の処理が行えるので、メモリより大きなサイズのファイルを読み込むことができるのです。
最後に
ストリームの仕組みを知ると、効率が良いんだなと理解し自信を持ってストリームを使用できますね。