Scala文件读写

24 阅读1分钟
  1. 把文字内容从.txt文件中读到内存中。
  • 把结果写入.txt文件。
  • 格式:scala.io.Source.formFile(文件名)
  1. 写程序分析数据
  • 作用:读入一个文件
  • 使用mkString方法
  •  分隔出一个一个的单词。
  1. 单词出现的频率
  •  建立一个Map,key是单词,value是次数。
  •  遍历所有的单词,对每个单词来说:
  • 判断单词是否存在,如果存在把对应的key+1;
  • 否则就设置对应的key,且value为1
  • 字符串的split方法

4.排序

  • Map本身是键值对,它是无序的。可以先转成List或者Seq,然后再排序。
package words

object words01 {
  def main(args:Array[String]):Unit = {
    //读入test.txt的内容 大大的长长的字符串
    //Sourect.forFile().mkString
    //对字符串进行分析 把句子变成一个一个单词
    //split

    //1
    val content = scala.io.Source.fromFile("./test.txt").mkString
    println(content)

    //2.对字符串进行拆分 使用split 空格 对这个长长的字符串做拆分 得到了一个数组 每个元素都是一个单词
    val rst= content.split(' ')

    //3.空的容器保存键值对数据 键:单词 值:次数
    val map = scala.collection.mutable.Map[String,Int]()
    rst.foreach(word => {
      //如果word在map中存在 就把值+1
      if(map .contains(word)){
        map(word) += 1
      }
      else {//如果word在map中不存在 就把值设为1
        //map += word ->1
        map(word) = 1
      }
    })
    //4.打印统计结果
    map.foreach(println)


 //4 排序
    // map.foreach(println)
    //按照单词出现的频率 从高到底排序
    //map是无序的 不能做排序
    //list 是可以排序的



    //5 把结果写入到文件中
    val wordLists = map.toList.sortBy(_._2).reverse
    val writer = new FileWriter("resuult.txt")
    wordLists.foreach(ele =>{
      writer.write(s"${ele._1 }:${ele._2}\n")
    })
    writer.close()

  }

}