Scalaでファイル出力
Scala人口拡大を目指し、実用的なサンプルコード作成に取り組んでいこうと考えております。
今回は複数のテキストファイルをマージして出力するコードに挑戦してみました。
ディレクトリ内の情報を取得するのにJavaのFileクラスを使わざるをえなかったのですが
scala.io以下にディレクトリ管理系のクラスはまだ実装されていないのですかね。
ちなみに改行コードの部分はやっつけでLinuxでしか動作テスト出来ておりませぬ。
なお、ScalaでのOS判定はこちら[Scala]OS判別を参考にさせていただきました。
import scala.io.Source import java.io._ object FileMerger { def main(args: Array[String]): Unit = { // 第1引数はマージ対象のファイルの存在するディレクトリ // 第2引数は出力するファイル名 mergeFile(fileList(args(0)),args(1),lineType()) } def lineType() = { System.getProperty("os.name") match { case "Linux" => "\n" case _ => "\r\n" } } def fileList(dir: String) = { new File(dir).listFiles } def mergeFile(fileList: Array[File], outFile: String, lineType: String) = { // テキストファイルをマージして指定ファイルに出力する val bw = new BufferedWriter(new FileWriter(new File(outFile))) try { for (fileName <- fileList.filter(_.getPath.endsWith(".txt"))) { println("target file => "+fileName) Source.fromFile(fileName).getLines().foreach( (line: String) => bw.write(line+lineType)) } } finally { bw.close() } } }