Spark基礎-Scala檔案操作

Xlucas發表於2017-09-04

核心
scala檔案操作

檔案操作的大概流程

這裡寫圖片描述

package com.xlucas

import java.io._
import scala.io.Source
/**
  * Created by xlucas on 2017/9/4 0004.
  */
@SerialVersionUID(99L) class PaicMis(val name:String) extends Serializable  //定義序列化類
object FileOop extends  App {
  val paic = new PaicMis("xlucas")

  def serializeMen[T](o: T): Array[Byte] = {
    val bos = new ByteArrayOutputStream() //記憶體輸出流,和磁碟輸出流從操作層面上講是一樣的
    val bos1 = new FileOutputStream("E:\\spark\\spark.txt")
    val oos = new ObjectOutputStream(bos)
    oos.writeObject(o)
    oos.close()
    bos.toByteArray
  }

  def serializeFile[T](o: T) = {
    val bos = new FileOutputStream("E:\\spark\\spark.txt")  //輸入檔案序列化
    val oos = new ObjectOutputStream(bos)
    oos.writeObject(o)
    oos.close()
  }

  println(serializeMen(paic))

  def deserializeMen[T](bytes: Array[Byte]): T = {
    val bis = new ByteArrayInputStream(bytes)//記憶體反序列化
    val ios = new ObjectInputStream(bis)
    ios.readObject().asInstanceOf[T]
  }

  println(serializeMen(paic))

  def deserializeFile[T](bytes: Array[Byte]): T = {
    val bis = new FileInputStream("E:\\spark\\spark.txt")//檔案反序列化
    val ios = new ObjectInputStream(bis)
    ios.readObject().asInstanceOf[T]
  }

  println(deserializeMen[PaicMis](serializeMen[PaicMis](paic)).name)
  serializeFile(paic)
  println(deserializeFile[PaicMis](null).name)

  for (line <- Source.fromFile("E:\\spark\\file.txt","UTF-8").getLines()) println(line) //scala讀取檔案的內容

  println(Source.fromFile("E:\\spark\\file.txt","UTF-8").mkString)//scala讀取檔案的內容

  println(Source.fromURL("http://blog.csdn.net/paicMis/article/month/2017/09","utf-8").mkString)//scala獲取url的內容
}

相關文章