Scalaでls

30分プログラム、その671。Scalaでファイル一覧の取得をやってみました。
最初は、ScalaAPIドキュメントを読んでいたんだけれども、どこにもファイル一覧を取得する関数が載ってない。
どうすんだよー、としばらく悩んでいたけど、JavaAPIを使えばいいことに気がついた。Scalaってすごいですね。

使い方

$ fsc ls.scala
$ scala Ls /tmp
/tmp/com.hp.launchport
/tmp/CrashReportCopyLock-iPhone
/tmp/ics1417
/tmp/icssuis501
/tmp/launch-jArT7K/Render
/tmp/launch-JuW5yp/:0
/tmp/launch-SfxT2B/Listeners
/tmp/launchd-92.3PegrP/sock
/tmp/MobileDevice.log
/tmp/MobileSync.lock.d12b41944a38cc6995ea5c356ceb9a6d71f35124
/tmp/screens/S-mzp/200.ttys000.home
/tmp/ssh-gqgJUFRVks/agent.1519
/tmp/ssh-lgNgJpjCdy/agent.188

ソースコード

import java.io.File

object Ls {
  def ls(path : String) : Seq[String] = {
    var file = new File(path)
    return file.listFiles().map(_.getPath())
  }

  def ls_r(path : String) : Seq[String] = {
    var file = new File(path)
    return file.listFiles().flatMap(file =>
      if(file.isDirectory()){
	ls_r(file.getPath())
      }else{
	List(file.getPath())
      })
  }

  def main(args : Array[String]) = {
    for(path <- args){
      ls_r(path).foreach(println(_))
    }
  }
}