For循环
输出1到n
for (i <- 1 until 5)
println(i)
for (i <- 1 to 5)
println(i)
读取文件并遍历
//读取一个文件夹下面所有得文件
val listFile = new File("C:\\Users\\guo20\\Desktop\\pdf").listFiles
//遍历方式1
for (f <- listFile)
println(f.getAbsolutePath)
//遍历方式2
listFile.foreach(f => println(f.getAbsolutePath))
//遍历方式3
for (i <- 0 to listFile.length - 1)
println(listFile(i))
读取文件夹并过滤
def testLoop():Unit = {
val listFile = new File("C:\\Users\\guo20\\Desktop\\pdf").listFiles
for (f <- listFile
if f.getName.endsWith(".pdf") // 过滤后缀名是pdf的文件
if f.isDirectory) //判断文件是不是文件夹
println(f.getAbsolutePath)
}
嵌套循环过滤
def grep(pattern: String): Unit = {
val listFile = new File("C:\\Users\\guo20\\Desktop\\pdf").listFiles
//方式一
for (file <- listFile //for循环之后是小括号
if file.getName.endsWith(".log"); //这里有分号
line <- fileLines(file)
if line.trim.matches(pattern)
) println(file + ":" + line.trim)
//方式二
for {file <- listFile //for循环之后是花括号
if file.getName.endsWith(".log") //这里没有分号
line <- fileLines(file)
trimmed = line.trim
if trimmed.matches(pattern)
} println(file + ":" + trimmed)
}
产生一个新的集合
val listFile = new File("C:\\Users\\guo20\\Desktop\\pdf").listFiles
val newFiles = for{
file <- listFile
if file.getName.endsWith(".pdf")
if file.isFile
} yield file
newFiles.foreach(f => println(f.getAbsolutePath))
网友评论