Scala中的二进制文件

时间:2017-07-11 22:30:57

标签: scala file outputstream

我想在scala中创建一个包含如下列表的二进制文件:

271,813854,270
271,814100,267
271,814106,813858
325,813854,324
325,814100,321
325,814106,813858
643,813854,642
643,814100,639
643,814106,813858
670,813854,813855
670,814100,666
670,814106,813858

为了得到这个,我正在编写以下代码:

class Indexes (val listSPO:List[tripleInt], val listPSO:List[tripleInt], val listOSP:List[tripleInt] ){
  val sl = listSPO.sortBy(l => (l.sub, l.pre))
  val pl = listPSO.sortBy(l => (l.sub, l.pre))
  val ol = listOSP.sortBy(l => (l.sub, l.pre))

  var y1:Int=0
  var y2:Int=0
  var y3:Int=0

  val fstream:FileOutputStream = new FileOutputStream("patSPO.dat")
  var out:BufferedOutputStream = new BufferedOutputStream(fstream)
  val fstream2:FileOutputStream = new FileOutputStream("patPSO.dat")
  var out2:BufferedOutputStream = new BufferedOutputStream(fstream2)
  val fstream3:FileOutputStream = new FileOutputStream("patOSP.dat")
  var out3:BufferedOutputStream = new BufferedOutputStream(fstream3)

  for ( a <- 0 to listSPO.size-1){
    y1 = listSPO(a).sub
    y2 = listSPO(a).pre
    y3 = listSPO(a).obj
    val tpiSOP:tripleInt = new tripleInt(y1,y3,y2)
    out.write(tpiSOP)
  }}

然后每个列表包含三个Int数字,并且我想为每个列表创建一个对应的文件。 tripleInt对象声明为:

class tripleInt(var sub:Int, var pre:Int, var obj:Int)

我的问题是为什么我在行out.write(tpiSOP)中收到错误以及如何修复它?

更新:错误是'无法解决此类签名''类型不匹配'

1 个答案:

答案 0 :(得分:1)

URLDecoder方法不知道write()是什么或者如何处理它。您必须将tripleInt更改为tpiSop方法理解的内容,即单个write()Int