加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala文件操作

发布时间:2020-12-16 09:34:04 所属栏目:安全 来源:网络整理
导读:? 本文记录了Scala对文件的操作,主要包括遍历文件、文件复制、递归读取文件、序列化和反序列化。 ? import java.io._ import scala.io.Sourceobject FileOperation { def main(args: Array[String]): Unit = { // 遍历文件的每一行 // 01 使用source.getLin

?

本文记录了Scala对文件的操作,主要包括遍历文件、文件复制、递归读取文件、序列化和反序列化。

?

import java.io._

import scala.io.Source

object FileOperation {

    def main(args: Array[String]): Unit = {

        // 遍历文件的每一行
        // 01 使用source.getLines()返回的迭代器
        val source01 = Source.fromFile("D:/test.txt","UTF-8")
        val lineIterator01 = source01.getLines()
        for (line <- lineIterator01) println(line)

        // 02 将Source.getLines返回的迭代器,转换成数组
        val source02 = Source.fromFile("D:/test.txt","UTF-8")
        val lineIterator02 = source02.getLines().toArray
        for (line <- lineIterator02) println(line)

        // 03 调用Source.mkString,返回文本中所有的内容
        val source03 = Source.fromFile("D:/test.txt","UTF-8")
        println(source03.mkString)
        source03.close()

        // 04 遍历文件中的每个字符
        val source04 = Source.fromFile("D:/test.txt","UTF-8")
        for (c <- source04) println(c + " ")

        // 05 从URL中读取字符
        val source05 = Source.fromURL("https://www.hao123.com","UTF-8")
        for (c <- source05) print(c + " ")

        // 06 从字符串中读取
        val source06 = Source.fromString("Hello World")
        for (c <- source06) print(c + " ")

        // 07 文件copy
        val in = new FileInputStream(new File("D:/test.txt"))
        val out = new FileOutputStream(new File("D:/test_copy.txt"))
        val buf = new Array[Byte](1024)
        in.read(buf)
        out.write(buf,0,1024)
        in.close()
        out.close()

        // 08 写文件
        val pw = new PrintWriter("D:/test_write.txt")
        pw.println("hello world")
        pw.close()

        // 09 递归遍历子目录
        val iterator = recursion(new File("D:/test"))
        for (dir <- iterator) println(dir)

        // 序列化
        val angus = new P("angus")
        val oos = new ObjectOutputStream(new FileOutputStream("D:/test/angus.obj"))
        oos.writeObject(angus)
        oos.close()

        // 反序列化
        val ois = new ObjectInputStream(new FileInputStream("D:/test/angus.obj"))
        val restoredAngus = ois.readObject().asInstanceOf[P]
        println(restoredAngus.name)
    }


    def recursion(dir: File): Iterator[File] = {
        val childDirs = dir.listFiles.filter(_.isDirectory)
        childDirs.toIterator ++ childDirs.toIterator.flatMap(recursion)
    }


    class P(val name: String) extends Serializable


}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读