2014-11-03 82 views
6

所以,基本上我想从base64字符串内容创建一个临时文件。现在,我正在使用原生的java-io函数执行此操作。但是我想用scalarapture-io库来达到同样的结果。用base64字符串创建一个临时文件,提醒-io

所以我的问题是,是否有可能实现这与提 - io,如果是这样,如何

我已经通过文件去了,但不够具体:

https://github.com/propensive/rapture-io/blob/master/doc/introduction.md

这里是我的实际代码:

import org.apache.commons.codec.binary.Base64 
import java.io.FileOutputStream 
import java.io.File 

val data: String = base64StringContent //Base64 String content of the file. 
val fileName = myFileName 
val fileExt = myFileExt 

//It does write the file in my temp folder. 
val file: File = File.createTempFile(fileName, fileExt) 
val fileByteArray: Array[Byte] = Base64.decodeBase64(data) 
val fileOutFile: FileOutputStream = new FileOutputStream(file) 
fileOutFile.write(fileByteArray) 
fileOutFile.close() 
file.deleteOnExit() 
file 

回答

1

这是否对你的工作?

import rapture.fs.platform.posix 
import rapture.io._ 
import rapture.core._ 
import rapture.fs._ 
import strategy.throwExceptions 

val tmpFile = (File/"tmp").tempFile(prefix = "yourfileName",suffix = ".extension") 
"data" >> tmpFile 
tmpFile.deleteOnExit() 
tmpFile.delete() 

在Windows上未测试。您可能需要使用不同的分隔符,例如\\代替/

import rapture.fs.platform.windows 
import rapture.io._ 
import rapture.core._ 
import rapture.fs._ 
import strategy.throwExceptions 

val tmpFile = (File/"C:"/"Windows"/"Temp").tempFile(prefix = "yourfileName",suffix = ".extension") 
"data" >> tmpFile 
tmpFile.deleteOnExit() 
tmpFile.delete() 
+0

嗨!感谢您的回答!代码打破“val tmpFile ...”行,得到:“系统找不到指定的路径”。 我在Windows环境下...我应该改变它的任何其他文件夹/路线?任何其他可以同时适用于两种环境的替代方案? (我正计划在Heroku中运行此工具) – mayacr86 2014-11-04 15:50:36

+0

请参阅未经测试的解决方案的编辑答案。我想你必须根据其他信息有条件地导入平台。你可以把平台放在一个配置文件中,或者根据查询System.properties。您也可以根据平台类型有条件地创建fileUrl。 – bearrito 2014-11-04 16:01:43

+0

Windows路由确实如此工作,只需在'C'之后添加':'即可。但是这里的东西......是不是在我的'Temp'文件夹中创建文件,但它们都是“损坏”的。 我假设“数据”是我的base64字符串值,对不对? (“data”>> tmpFile) – mayacr86 2014-11-04 16:58:54

相关问题