文件读写-全文单词统计

31 阅读1分钟

(一)从文件中读出内容

在scala中,涉及到文件读写的方法有很多,可以使用java.io下的工具包,也可以使用scala.io下的功能。

下面介绍source.fromFile这个方法。

格式:scala.io.Source.formFile(文件名)

作用:读入一个文件

package words

object words01 {
  def main(args: Array[String]): Unit = {
    //1.读入text.txt的内容  大大的长长的字符串
    // Source.formFile().mkString
    //2.对字符串进行拆分 把句子变一个一个单词

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


    //对字符串进行拆分
    val rst = content.split(' ')
    rst.foreach(println)
  }
}

image.png

(二)写拆分单词统计个数

思路: 1.分隔出一个一个的单词。

2.建立一个Map,key是单词,value是次数。

3.遍历所有的单词,对每个单词来说:

判断单词是否存在,如果存在把对应的key+1; 否则就设置对应的key,且value为1

package words

object words01 {
  def main(args: Array[String]): Unit = {
    //1.读入text.txt的内容  大大的长长的字符串
    // Source.formFile().mkString
    //2.对字符串进行拆分 把句子变一个一个单词

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


    //对字符串进行拆分 使用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
      }
      //如果word在map中不存在,就把值设1
      else {
        map(word) = 1
      }
    })

    //打印统计结果
    map.foreach(println)
  }
}