2014年5月4日 星期日

scala 檔案目錄操作

如果你要對目錄下作一下操作,如列出所有的檔案之類的。可以考慮用 reflect.io 這個 package。簡單的用法如下。

import reflect.io._

Directory(".").list




Directory(".").list 會印出當前目錄下所有檔案。
如果要遞迴找出該目錄下所有檔案
則用
import reflect.io._

Directory(".").deepList

如果你要列出目錄下所有的 scala 結尾的檔案,可用
import reflect.io._
Directory(".").list.toList.map(_.toString).filter(_.endsWith("scala")).foreach(println)

如果你要操作路徑的話,可以用 Path 類別
import reflect.io._
val p = Path(".")
val scala_folder = p / "scala"
scala_foler.walk()

上面這段程式碼,先建立一個 Path 物件,之後在切換到 scala 目錄下。最後在顯示 scala 目錄下所有檔案。你也可以用 walkFilter 來顯示特定檔案。

如果要讀寫文字檔案的話,則可用 File 類別

import reflect.io._
val f = File("a.tmp")
f.lines.toList

上面程式碼可以讀取檔案,每一行當作一個 list 的元素
如果要寫入檔案的話,則用 writeAll
import reflect.io._
val f = File("a.tmp")
f.writeAll("Hi", "How are you", "\n")

至於你要看這個 library 的文件,目前我只有找到這
https://github.com/scala/scala/tree/master/src/reflect/scala/reflect/io
就是直接看 source code。
希望之後官方文件會補上

或者是你直接用 iscala


其他:


如果你無法使用 reflect.io
可以考慮用 scala.io.Source 來讀檔
如下面例子

val lines = scala.io.Source.fromFile("file.txt").mkString
f.writeAll("Hi", "How are you", "\n")

沒有留言:

張貼留言