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
生活不止眼前的苟且
还有诗和远方的田野
生
活
不
止
眼
前
的
苟
且
还
有
诗
和
远
方
的
田
野