Scalaでls
30分プログラム、その671。Scalaでファイル一覧の取得をやってみました。
最初は、ScalaのAPIドキュメントを読んでいたんだけれども、どこにもファイル一覧を取得する関数が載ってない。
どうすんだよー、としばらく悩んでいたけど、JavaのAPIを使えばいいことに気がついた。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(_)) } } }