如何将文件读取到 InputStream,然后将其写入 Scala 中的 OutputStream?

我试图在Scala中使用基本的Java代码来读取文件并写入ExputStream,但是当我在Scala中使用通常的while( != -1)时,会给我一个警告“将Unit和Int的类型与!=进行比较将始终产生true”。

代码如下:

    val file = this.cache.get(imageFileEntry).getValue().asInstanceOf[File]
    response.setContentType( "image/%s".format( imageDescription.getFormat() ) )

    val input = new BufferedInputStream( new FileInputStream( file ) )
    val output = response.getOutputStream()

    var read : Int = -1

    while ( ( read = input.read ) != -1 ) {
        output.write( read )
    }

    input.close()
    output.flush()

我应该如何在Scala中从输入流写入输出流?

我最感兴趣的是类似Scala的解决方案。


答案 1

你可以这样做:

Iterator 
.continually (input.read)
.takeWhile (-1 !=)
.foreach (output.write)

答案 2

如果速度很慢:

Iterator 
.continually (input.read)
.takeWhile (-1 !=)
.foreach (output.write)

你可以扩展它:

val bytes = new Array[Byte](1024) //1024 bytes - Buffer size
Iterator
.continually (input.read(bytes))
.takeWhile (-1 !=)
.foreach (read=>output.write(bytes,0,read))
output.close()

推荐