zoukankan      html  css  js  c++  java
  • 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
      }
    }
    

     

  • 相关阅读:
    c学习第3天
    [BZOJ2124] 等差子序列
    CF710F String Set Queries
    Cow Hopscotch (dp+树状数组优化)
    CF528D Fuzzy Search (bitset)
    Gym 101667L Vacation Plans (dp)
    Codeforces 432D Prefixes and Suffixes (kmp+dp)
    [题解]BZOJ2115 XOR
    洛谷 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
    从中国矢量图筛选出江苏省行政区划图
  • 原文地址:https://www.cnblogs.com/gnivor/p/4322422.html
Copyright © 2011-2022 走看看