Scala:在Scala 2.11中写入文件/ jar的规范方式

时间:2013-10-08 09:03:56

标签: scala jar io

我有以下方法(实际上是一个功能)

def addToJar(jarOut: JarOutputStream, file: File, reldir: String): Unit =
{
  val fName = reldir + file.getName         
  val fNameMod = if (file.isDirectory) fName + "/" else fName
  val entry = new JarEntry(fNameMod)
  entry.setTime(file.lastModified)         
  jarOut.putNextEntry(entry)
  if (file.isDirectory)
  {
     jarOut.closeEntry
     file.listFiles.foreach(i => addToJar(jarOut, i, fName + "/"))
  }
  else
  {         
     var buf = new Array[Byte](1024)
     val in = new FileInputStream(file)
     Stream.continually(in.read(buf)).takeWhile(_ != -1).foreach(jarOut.write(buf, 0, _))
     in.close
     jarOut.closeEntry()
  }         
}

我在查看其他问题和博客文章之后写了这篇文章,但仍然存在以下问题:

是否应该有try-catch块?

是否可以使用Scala.io类代替java.io.fileinputstream?

缓冲区写入方法比使用java.nio.channels.FileChannel,Apache Commons IO FileUtils.copyFile还是Java 7的Files.copy更快?

对于一个大项目来说,在C ++中编写整个jar创建实用程序并只调用一次会有很大的性能吗?

注意:在撰写Scala 2.11的最后一个开发里程碑时,M6尚未发布。但是我的理解是Scala.io中没有添加内容。

0 个答案:

没有答案