Scala学习笔记--文件IO

补充:

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

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

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

读取行

//读取文件中的所有行,可以调用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
  }
}

读取字符(一个一个字符处理)

//按字符处理
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
  }
}

读取词法单元和数字

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
  }
}

运行结果为网址的html

读取二进制文件

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
  }
}

 

原文地址:https://www.cnblogs.com/gnivor/p/4322422.html