scala 读取txt文件(从文件读取)

文件格式分别如下

package txt
 
object ReadTxt {
 
  def readFromTxtByLine(filePath:String) = {
    //导入Scala的IO包
    import scala.io.Source
    //以指定的UTF-8字符集读取文件,第一个参数可以是字符串或者是java.io.File
    val source = Source.fromFile(filePath, "UTF-8")
    //或取文件中所有行
    //val lineIterator = source.getLines()
    //迭代打印所有行
    //lineIterator.foreach()
    //将所有行放到数组中
    val lines = source.getLines().toArray
    source.close()
    //println(lines.size)
    lines
  }
 
  def LackingFileUtil(array:Array[String],keyMap:Map[String,String]) = {
    // 使用for循环和until遍历Array / ArrayBuffer
    // 使until是RichInt提供的函数
    var lockMapList = List[Map[String,String]]()
    for (i <- 0 until array.length){
      if(i==0){
        val lineArray = array(i).trim.split("\\|")
        lockMapList = lockMapList :+ Map("id"->lineArray(0).trim,"name"->lineArray(1).trim,"pass"->lineArray(2).trim)
      }else{
        val lineArray = array(i).split(",")
        if(lineArray.length==3){
          lockMapList = lockMapList :+ Map("id"->lineArray(0).trim,"name"->lineArray(1).trim,"pass"->lineArray(2).trim)
        }else if(lineArray.length==2){
          val pass = keyMap.getOrElse(lineArray(0).trim,lineArray(1).trim)
          lockMapList = lockMapList :+ Map("id"->lineArray(0).trim,"name"->lineArray(1).trim,"pass"->pass.trim)
        }else if(lineArray.length==1){
          lockMapList = lockMapList :+ Map("id"->lineArray(0).trim,"name"->"","pass"->"")
        }else{
          lockMapList = lockMapList :+ Map("id"->"-","name"->"","pass"->"")
        }
      }
      //println(array(i))
    }
    lockMapList
 
    // 跳跃遍历Array / ArrayBuffer
    /*for(i <- 0 until (array.length, 2))
      println(array(i))*/
 
    // 从尾部遍历Array / ArrayBuffer
    /*for(i <- (0 until array.length).reverse)
      println(array(i))*/
 
    // 使用“增强for循环”遍历Array / ArrayBuffer
    /*for (e <- array){
      println(e)
      e.split(",").mkString
    }*/
 
  }
 
  def KeyFileUtil(array:Array[String]) = {
    var keyMapList = Map[String, String]()
    for (i <- 0 until array.length) {
      //println(array(i))
      val lineArray = array(i).trim.split(",")
      //println(lineArray.size)
      if(lineArray.size==2){
        keyMapList = keyMapList ++ Map(lineArray(0).trim -> lineArray(1).trim)
      }else if(lineArray.size==1){
        keyMapList = keyMapList ++ Map(lineArray(0).trim -> "")
      }else{
        keyMapList = keyMapList ++ Map("-" -> "")
      }
    }
    keyMapList
  }
 
  def isEmpty(s: String): Boolean = (s == null) || (s.size==0)
}

package txt
 
import scala.reflect.io.File
 
 
object App {
 
  def main(args: Array[String]): Unit = {
 
    val key = ReadTxt.readFromTxtByLine("D:"+File.separator+"workspace"+File.separator+"source.txt")
    //println(key.mkString)
    val keyMap = ReadTxt.KeyFileUtil(key)
 
    //println(keyMap)
 
 
    val lack = ReadTxt.readFromTxtByLine("D:"+File.separator+"workspace"+File.separator+"source1.txt")
 
    val lockMapList = ReadTxt.LackingFileUtil(lack,keyMap)
 
    println(lockMapList)
 
 
  }
}

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值