我试图在Scala中使用基本的Java代码来读取文件并写入OutputStream,但是当我在Scala中使用常见的而( != -1 )时,我会给我一个警告:“将单位和整数的类型与!=进行比较将始终得到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的解决方案。
发布于 2011-08-03 22:35:11
你可以这样做:
Iterator
.continually (input.read)
.takeWhile (-1 !=)
.foreach (output.write)
发布于 2013-05-31 07:52:39
如果这很慢:
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()
发布于 2011-08-03 22:18:53
赋值语句在Scala中总是返回单位,所以read = input.read
返回单位,它永远不会等于-1。你可以这样做:
while ({read = input.read; read != -1}) {
output.write(read)
}
https://stackoverflow.com/questions/6927873
复制相似问题