读取文件并遍历
package com.lyz.eight import scala.io.Source object FileLearn { def main(args: Array[String]): Unit = { //读取文件 val file = Source.fromFile("C:\\Users\\39402\\Desktop\\临时文件\\临时文档.txt", "utf-8") //得到所有行的迭代器 val lines = file.getLines() //只能调用一次,如果再次调用那么返回的迭代器为空,避免这样的情况可以把迭代器里的数据转换成数组 //遍历每一行 for (elem <- lines) { println(elem) } //遍历每一个字符 for (elem <- file) { println(elem) } //转换成数组 val lineAarray = file.getLines().toArray //每个元素就是文本文件的一行 //遍历数组 for (elem <- lineAarray) { println(elem) } //所有内容转换成字符串 val string = file.mkString println(string) //关闭流 file.close() //利用url读取数据 val urlText = Source.fromURL("https://www.baidu.com/", "utf-8") val lineArray = urlText.getLines().toArray for (elem <- lineArray) { println(elem) } } }
序列化:需要序列化的必须是先
Java
的Serializable
偏函数:所谓的偏函数就是没有定义好明确参数的函数,该函数只处理参数定义域范围内的子集,函数体里边是由一连串的
case
语句组成。这样的写法是代码更加简洁易懂。偏函数是PartialFunction[A,B]
的一个实例,接受一个A类型的参数,返回一个B类选的结果。这个类有两个方法,一个是apply()
方法,直接调用以后可以通过函数体内的case
进行匹配并返回结果;另个一是isDefindAt
方法,他的作用就是来判断传入进来的参数是否在这个偏函数的处理范围之内,如果在就返回true
,如果不在就返回false
package com.lyz.eight object PartialFunctionLearn { def main(args: Array[String]): Unit = { //调用偏函数的isDefinedAt方法,如果体内没有匹配的数据,则打印为 false val h = hello.isDefinedAt("12") println(h) //调用偏函数的apply方法,如果体内有匹配数据则返回结果 val h1 = hello.apply("111") println(h1) } val hello: PartialFunction[String, Int] = { case "l4" => 10 case "w5" => 20 case _ =>0 } }
执行外部命令:因为Scala程序是运行在Java虚拟机的进程中的,Scala程序是可以执行进程之外的操作,比如所操作系统的一些命令,甚至可以启动其他进程。
//导入能执行外部命令的依赖
import sys.process._
//以linux为例,这个命令是可以生效的
"ls -a"!