Scala(十)文件操作、对象序列化、偏函数、执行外部命令

  1. 读取文件并遍历

    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)
        }
      }
    }
    
  2. 序列化:需要序列化的必须是先JavaSerializable

  3. 偏函数:所谓的偏函数就是没有定义好明确参数的函数,该函数只处理参数定义域范围内的子集,函数体里边是由一连串的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
      }
    }
    
  4. 执行外部命令:因为Scala程序是运行在Java虚拟机的进程中的,Scala程序是可以执行进程之外的操作,比如所操作系统的一些命令,甚至可以启动其他进程。

//导入能执行外部命令的依赖
import sys.process._

//以linux为例,这个命令是可以生效的
"ls -a"!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值