[置顶] scala yield和文件的操作

import java.io.File
import scala.io.Source


object Demo2 {
  
//  列出所有的files
  private val files = new File(".").listFiles
//  
  private def filelines(file:File) = {
//    返回的类型是::List[String]
    Source.fromFile(file).getLines().toList
  }
//  显示文件的行数
  private def showfilelines() = {
//    返回的类型是::List[String]
    var file = new File("yhq.txt")
//    读取文件的某一行
    println(Source.fromFile(file).getLines().toList(1))
  }
//  显示所有 文件夹
  def showFiles() = {
      for(file<- files)
      println(file)
  }
      
  def main(args: Array[String]): Unit = {
    showFiles()
    showfilelines()
    var lineLengths = 
      for{
//        遍历文件
        file<-files
        if file.getName.endsWith(".txt")
//      遍历所有的行
        line<-filelines(file)
//        trim返回文件的副本,忽略文件中出現的空格
        trimmedLine = line.trim
//        模糊匹配
        if trimmedLine.matches(".*棒.*")
        
      } 
//  将读取到的内容放到yield中去  
    yield line+":合计"+trimmedLine.length()+"个字"
      
      lineLengths.foreach(println)
  }
  
}

你可能感兴趣的:(scala,scala,文件操作,for,yield,scala教程)