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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值