第21节:Scala文件和xml操作(上)

来源:互联网 发布:php tmp目录 编辑:程序博客网 时间:2024/06/05 16:12

1 spark源码的文件和xml使用的源码鉴赏
2 scala文件和xml操作实战

 

package com.dtspark.scala.basics


import java.io.ByteArrayOutputStream
import java.io.ObjectInputStream
import java.io.ByteArrayInputStream
import java.io.ObjectOutputStream
import java.io.FileOutputStream
import java.io.FileInputStream
import scala.io.Source


//序列化
@SerialVersionUID(99L) class DTspark(val name:String) extends Serializable


object HellowFileOpps extends App{
  
  val dtspark=new DTspark("Spark")
  
   /** Serialize an object using Java serialization 序列化*/
  def serialize[T](o: T): Array[Byte] = {
    val bos = new ByteArrayOutputStream()//内存输出流和磁盘输出流从操作的层面上讲是一样的
    val oos = new ObjectOutputStream(bos)
    oos.writeObject(o)
    oos.close()
    bos.toByteArray
  }


  println(serialize(dtspark))
  
  /** Deserialize an object using Java serialization 反序列化*/
  def deserialize[T](bytes: Array[Byte]): T = {
    val bis = new ByteArrayInputStream(bytes)
    val ois = new ObjectInputStream(bis)
    ois.readObject.asInstanceOf[T]
  }
  
  println(deserialize[DTspark](serialize(dtspark)).name)
  
  
  
   /** 文件输出流序列化 以下都是依赖jvm操作*/
  def serializefile[T](o: T) = {
    //内存输出流和磁盘输出流从操作的层面上讲是一样的
    val bos=new FileOutputStream("F:\\test\\context.txt")
    val oos = new ObjectOutputStream(bos)
    oos.writeObject(o)
    oos.close()   
  }
   /** 文件输入流序列化*/
  def desserializefile[T](o: T) = {
    //内存输出流和磁盘输出流从操作的层面上讲是一样的
    val bos=new FileInputStream("F:\\test\\context.txt")
    val oos = new ObjectInputStream(bos)
    oos.readObject().isInstanceOf[T]    
  }
  
  serializefile(dtspark)
  
  //scala自己的文件操作
  for(line<-Source.fromFile("F:\\test\\test1.txt","GBK").getLines().toArray) println(line)
 
  for(item<-Source.fromFile("F:\\test\\test1.txt","GBK")) println(item)
 
  //从网络读取
  println(Source.fromURL("http://spark.apache.org/","UTF-8").mkString)
}



控制台输出:

[B@12a3a380
Spark
生活不止眼前的苟且
还有诗和远方的田野



























0 0
原创粉丝点击