Scala學習筆記--文件IO

補充:html

http://blog.csdn.net/lyrebing/article/details/20369445java

http://developer.51cto.com/art/200907/134957.htmexpress

http://nerd-is.in/2013-08/scala-learning-files-and-regular-expressions/數組

 

讀取行spa

//讀取文件中的全部行,能夠調用scala.io.Source對象的getLines方法
object LineIO{
  def main(args:Array[String]):Unit = {
    val source = Source.fromFile("F:\\way.txt","UTF-8")
    //第一個參數能夠是字符串或者是java.io.File
    //第二個參數可省略
    val lineIterator =source.getLines
    //結果是一個迭代器
    
    for(l<-lineIterator)
      println(l)
    //或者能夠對迭代器應用toArray或toBuffer方法,將行放到數組或數組緩衝當中
    val lines = source.getLines.toArray
    //將整個文件讀取成一個字符串
    //val contents = source.mkString;      
    source.close
  }
}

 

讀取字符(一個一個字符處理).net

//按字符處理
object CharIO{
  def main(args:Array[String]):Unit={
    val source =Source.fromFile("F:\\way.txt","UTF-8")
    val iter= source.buffered
    //println(iter.length)
    while(iter.hasNext){
      print(iter.next.toString)
    }
    source.close
  }
}

 

讀取詞法單元和數字scala

object NumIO{
  def main(args:Array[String]):Unit={
    val source = Source.fromFile("F:\\num.txt","UTF-8")
    val tockens = source.mkString.split(" ")
    for(w<-tockens){
      println(w.toInt)
    }
    //另外一種方法
    val numbers = for(w<-tockens)
      yield w.toDouble
    for(num<-numbers){
      println(num)
    }
    
    //另外一種方法
    val numbers2 = tockens.map(_.toDouble)
  }
}

 

 從URL或其餘源讀取調試

//讀取非文件源的方法
object URLIO{
  def main(args:Array[String]):Unit={
	//從URL讀取
    val source= Source.fromURL("http://www.baidu.com","UTF-8")
	val lineIterator =source.getLines
	for(l<-lineIterator){
	  println(l.toString())
	}
	
	//從給定的字符串讀取--調試有用
	val source2= Source.fromString("Hello world")
	
	//從標準輸入讀取
	val source3  = Source.stdin
  }
}

運行結果爲網址的htmlhtm

 

讀取二進制文件對象

Scala沒有提供讀取二進制文件的方法,須要使用Java類庫

object URLIO{
  def main(args:Array[String]):Unit={
    val file = new File("F:\\info.bin")
    val in = new FileInputStream(file)
    val bytes = new Array[Byte](file.length.toInt)
    in.read(bytes)
    in.close
  }
}

 

寫入文本文件

object WriteIO{
  def main(args:Array[String]):Unit={
    val out = new PrintWriter("F:\\numbers.txt")
    for(i<-1 to 100) 
      out.println(i)
    out.close
  }
}
相關文章
相關標籤/搜索