统计目录下面的文件所有单词
2016-01-09 18:03
211 查看
1.作业:统计目录下面的文件所有单词
2.代码实现
package
com.jn.scala.wangjialin.copy
import
java.io.File
import
scala.io.Source
/**
* Created by admin on 2016/1/9.
*/
object
WordCounter {
//存储单词和个数
var
map
=
Map.
empty[String,
Int]
def
main(args: Array[String
]) {
val
files2 = subFileNames(
new
File(
"d:/test"))
for(i <- files2){
readFile(i)
println(i)
}
map.foreach(f =>println(f))
}
/**
* 递归调用获取所有文件的全路径
* @param dir
*
@return
*/
def
subFileNames(dir: File):Iterator
[File]={
val
d = dir.listFiles.filter(_.isDirectory)
val
f = dir.listFiles.filter(_.isFile).toIterator
f ++ d.toIterator.flatMap(subFileNames(_))
}
/**
* 获取文件的每一个行
* @param file
*/
def
readFile(file: File){
val
f = Source.fromFile(file)
for
(line <- f.getLines()){
count(line)
}
}
/**
* 进行计算
* @param line
*/
def
count(line:
String
) = {
for
(word <- line.split(" ")){
if
(map.contains(word))
map
+= (word -> (map(word)+
1))
else
map
+= (word ->
1)
}
}
}
2.代码实现
package
com.jn.scala.wangjialin.copy
import
java.io.File
import
scala.io.Source
/**
* Created by admin on 2016/1/9.
*/
object
WordCounter {
//存储单词和个数
var
map
=
Map.
empty[String,
Int]
def
main(args: Array[String
]) {
val
files2 = subFileNames(
new
File(
"d:/test"))
for(i <- files2){
readFile(i)
println(i)
}
map.foreach(f =>println(f))
}
/**
* 递归调用获取所有文件的全路径
* @param dir
*
@return
*/
def
subFileNames(dir: File):Iterator
[File]={
val
d = dir.listFiles.filter(_.isDirectory)
val
f = dir.listFiles.filter(_.isFile).toIterator
f ++ d.toIterator.flatMap(subFileNames(_))
}
/**
* 获取文件的每一个行
* @param file
*/
def
readFile(file: File){
val
f = Source.fromFile(file)
for
(line <- f.getLines()){
count(line)
}
}
/**
* 进行计算
* @param line
*/
def
count(line:
String
) = {
for
(word <- line.split(" ")){
if
(map.contains(word))
map
+= (word -> (map(word)+
1))
else
map
+= (word ->
1)
}
}
}
相关文章推荐
- javaEE之------Hibernate学习笔记
- iOS 进阶 第十六天(0419)
- 使用Java开发多线程端口扫描工具(二)
- Zabbix安装部署
- Zabbix安装部署
- Zabbix安装部署
- SAP R3 Oracle 9i 客户端安装 windows 用户端
- SAP R3 Oracle 9i 客户端安装 windows 用户端
- Swift开发IOS-UIActivityIndicatorView
- rails书籍展示添加游客评论
- iOS 进阶 第十五天(0417)
- 迁移ADT/ANT构建的Android项目至Gradle,a walk through。
- jQuery页面刷新(局部、全部)问题分析
- android监听软键盘,计算软键盘高度
- iOS 进阶 第十四天(0416)
- MYSQL 命令行显示乱码 解决方案
- CMake Error: The source directory "D:/opencv" does not appear to contain CMakeLists.txt.
- 初遇面对对象
- RMSE、RMS、标准差
- android Jni 调试d