1-scala文件操作--读写,序列化

简介:

scala文件读写,序列化

import java.io._
import java.nio.file._
import scala.io.Source

object HelloWorld extends App {

  println("打印所有的子目录")
  implicit def makeFileVisitor(f: (Path) => Unit) = new SimpleFileVisitor[Path] {
    override def visitFile(p: Path, attrs: attribute.BasicFileAttributes) = {
      f(p)
      FileVisitResult.CONTINUE
    }
  }

  val dir: File = new File("D:/scalawork")
  Files.walkFileTree(dir.toPath, (f: Path) => println(f))

  println("打印所有的文件")
  def subdirs(dir: File): Iterator[File] = {
    val children = dir.listFiles.filter(_.isDirectory)
    children.toIterator ++ children.toIterator.flatMap(subdirs _)
  }

  subdirs(new File("D:/scalawork")).foreach { println _ }

  println("写文件")
  val out = new PrintWriter("numbers.txt")
  for (i <- 1 to 100) out.println(i)
  // use string format
  val quantity = 100
  val price = .1
  out.print("%6d %10.2f".format(quantity, price))
  out.close()

  println("读文件")
  val lines = Source.fromFile("numbers.txt").getLines()
  lines.foreach { println _ }

  println("读取二进制文件")
  class Student(val name: Stringval sex: Shortval addr: Stringextends Serializable {
    override def toString(): String = {
      "name:%s,sex:%d,addr:%s".format(name, sex, addr)
    }
  }
  val studentA = new Student("张三"2"广州")
  val studentB = new Student("李四"2"广州")
  val outObj = new ObjectOutputStream(new FileOutputStream("student.obj"))
  outObj.writeObject(studentA)
  outObj.writeObject(studentB)
  outObj.close()
  val in = new ObjectInputStream(new FileInputStream("student.obj"))
  println(in.readObject().asInstanceOf[Student])
  println(in.readObject().asInstanceOf[Student])
  
  //读取二进制文件
    var in = NoneOption[FileInputStream]
  var out = NoneOption[FileOutputStream]
  try {
    in = Some(new FileInputStream("/tmp/Test.class"))
    out = Some(new FileOutputStream("/tmp/Test.class.copy"))
    var c = 0
    while ({ c = in.get.read; c != -1 }) {
      out.get.write(c)
    }
  } catch {
    case e: IOException => e.printStackTrace
  } finally {
    println("entered finally ...")
    if (in.isDefined) in.get.close
    if (out.isDefined) out.get.close
  }
}

目录
相关文章
|
存储 SQL 分布式计算
Flink - 读取 Parquet 文件 By Scala / Java
parquet 文件常见与 Flink、Spark、Hive、Streamin、MapReduce 等大数据场景,通过列式存储和元数据存储的方式实现了高效的数据存储与检索,下面介绍 Flink 场景下如何读取 Parquet。
1298 0
Flink - 读取 Parquet 文件 By Scala / Java
|
存储 Java
【Java】文件操作篇(四)序列化与对象处理流
文章目录 1 序列化与反序列化 2 对象处理流 2.1 概述 2.2 ObjectOutputStream案例 2.3 ObjectInputStream案例 2.4 对象处理流的使用细节
【Java】文件操作篇(四)序列化与对象处理流
|
分布式计算 Java Scala
一天学完spark的Scala基础语法教程十三、文件IO操作(idea版本)
一天学完spark的Scala基础语法教程十三、文件IO操作(idea版本)
97 0
一天学完spark的Scala基础语法教程十三、文件IO操作(idea版本)
|
消息中间件 Java Kafka
java,scala读写kafka操作
今天主要简单写一下kafka的读写,我写了java,scala两个版本的,写法比较老,但都能用,已经测试过了,直接上代码吧; java版本: package com.cn.kafka; import java.util.Arrays; import java.util.HashMap;
|
Scala
scala小工具:自动生成跑批文件
由于数仓项目中经常需要手工跑批补历史数据,通过excel手工拉取每次都要写函数不太方便,通过小工具生成,省时省力。
228 0
|
大数据 Scala 分布式计算
大数据Scala系列之文件以及正则表达式
大数据Scala系列之文件以及正则表达式1 读取行导入scala.io.Source后,即可引用Source中的方法读取文件信息。 import scala.io.Sourceobject FileDemo extends App{ val source = Source.
1366 0
|
Scala Java
[Scala]Scala学习笔记六 文件
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/76574187 1.
854 0