1.以随机时间间隔在一个目录下生成大量文件,文件名随机命名,文件中包含随机生成的一些英文语句,每个英语语句内部的单词之间用空格隔开。 2.实时统计每10秒新出现的单词数量。 3.实时统计最近1分钟内每个单词的出现次数(每10秒统计1次)。 4.实时统计每个单词累计出现次数,并将结果保存到本地文件(每10秒统计1次)。Scala编程实现文件和数据的生成,用IDEA书写
时间: 2024-03-23 08:36:39 浏览: 187
下面是使用Scala语言在IDEA中实现上述需求的示例代码:
```scala
import java.io.{File, PrintWriter}
import scala.collection.mutable
import scala.concurrent.duration._
import scala.util.Random
object FileGenerator {
val dirPath = "data" // 目录路径
val interval = 5.seconds // 文件生成时间间隔
val wordCountInterval = 10.seconds // 单词计数时间间隔
val totalCountInterval = 10.seconds // 总计数时间间隔
val wordCount = mutable.Map[String, Int]() // 单词计数器
var totalCount = 0 // 总计数器
def main(args: Array[String]): Unit = {
// 创建目录
val dir = new File(dirPath)
if (!dir.exists()) {
dir.mkdir()
}
// 启动定时器
system.scheduler.schedule(0.seconds, interval) {
generateFile()
}
system.scheduler.schedule(0.seconds, wordCountInterval) {
countWords()
}
system.scheduler.schedule(0.seconds, totalCountInterval) {
saveTotalCount()
}
}
// 生成文件
def generateFile(): Unit = {
val fileName = Random.alphanumeric.take(10).mkString // 随机生成文件名
val filePath = s"$dirPath/$fileName.txt"
val writer = new PrintWriter(new File(filePath))
for (i <- 1 to 100) {
val words = Random.alphanumeric.take(10).mkString(" ") // 随机生成单词
writer.println(words)
}
writer.close()
}
// 统计单词出现次数
def countWords(): Unit = {
val files = new File(dirPath).listFiles().filter(_.isFile)
val newWords = mutable.Map[String, Int]()
for (file <- files) {
for (line <- io.Source.fromFile(file).getLines()) {
val words = line.split(" ")
for (word <- words) {
if (!wordCount.contains(word)) {
newWords.put(word, 1)
} else {
wordCount.put(word, wordCount(word) + 1)
}
}
}
}
println(s"New words count: ${newWords.size}")
}
// 统计总出现次数并保存到文件
def saveTotalCount(): Unit = {
val total = wordCount.values.sum
totalCount += total
val writer = new PrintWriter(new File("total_count.txt"))
writer.println(s"Total count: $totalCount")
writer.close()
}
}
```
该示例程序开启三个定时器:文件生成定时器、单词计数定时器和总计数定时器。文件生成定时器每隔一定时间在目录下生成一个文件,文件名随机生成,文件中包含一些随机生成的英文语句。单词计数定时器每隔一定时间统计最近生成的文件中新出现的单词数量,并更新单词计数器。总计数定时器每隔一定时间统计所有单词的累计出现次数,并将结果保存到本地文件中。
阅读全文