avro java_avro 文件的读写

package com.htvu.streaming.tweet

import java.io._

import org.apache.avro.io.{DatumWriter, _}

import org.apache.avro.specific.{SpecificDatumReader, SpecificDatumWriter}

object SerializableUser {

def apply(user: twitter4j.User): SerializableUser =

new SerializableUser(new User(

new java.lang.Long(user.getId),

user.getScreenName,

user.getLang,

new java.lang.Integer(user.getStatusesCount)))

}

case class SerializableUser() extends User with Serializable {

private def setValues (user: User) {

setId(user.getId)

setLang(user.getLang)

setScreenName(user.getScreenName)

setStatusesCount(user.getStatusesCount)

}

def this (user: User) {

this()

setValues(user)

}

@throws (classOf[IOException] )

private def writeObject (out: ObjectOutputStream) {

val writer: DatumWriter[User] = new SpecificDatumWriter[User] (classOf[User] )

val encoder: Encoder = EncoderFactory.get.binaryEncoder (out, null)

writer.write (this, encoder)

encoder.flush()

}

@throws (classOf[IOException] )

@throws (classOf[ClassNotFoundException] )

private def readObject (in: ObjectInputStream) {

val reader: DatumReader[User] = new SpecificDatumReader[User] (classOf[User] )

val decoder: Decoder = DecoderFactory.get.binaryDecoder (in, null)

setValues (reader.read (null, decoder) )

}

@throws (classOf[ObjectStreamException] )

private def readObjectNoData() {

}

}

object SerializableTweet {

def apply(status: twitter4j.Status): SerializableTweet =

new SerializableTweet(new Tweet(

new java.lang.Long(status.getId),

status.getText,

status.getCreatedAt.toString,

SerializableUser(status.getUser)))

}

case class SerializableTweet() extends Tweet with Serializable {

private def setValues (tweet: Tweet) {

setId (tweet.getId)

setText (tweet.getText)

setUser (tweet.getUser)

setCreatedAt (tweet.getCreatedAt)

}

def this (tweet: Tweet) {

this ()

setValues (tweet)

}

@throws (classOf[IOException] )

private def writeObject (out: ObjectOutputStream) {

val writer: DatumWriter[Tweet] = new SpecificDatumWriter[Tweet] (classOf[Tweet] )

val encoder: Encoder = EncoderFactory.get.binaryEncoder (out, null)

writer.write (this, encoder)

encoder.flush()

}

@throws (classOf[IOException] )

@throws (classOf[ClassNotFoundException] )

private def readObject (in: ObjectInputStream) {

val reader: DatumReader[Tweet] = new SpecificDatumReader[Tweet] (classOf[Tweet] )

val decoder: Decoder = DecoderFactory.get.binaryDecoder (in, null)

setValues (reader.read (null, decoder) )

}

@throws (classOf[ObjectStreamException] )

private def readObjectNoData() {

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值