Scala 使用rapture io从base64字符串创建临时文件
因此,基本上我想从base64字符串内容创建一个临时文件。现在,我正在使用本机JavaIO函数来实现这一点。但是我想使用scala的rapture io库实现同样的结果 所以我的问题是,是否有可能通过rapture io实现这一点,如果有,如何实现 我已经阅读了文档,但不够具体: 这是我的实际代码:Scala 使用rapture io从base64字符串创建临时文件,scala,file-io,java-io,rapture.io,Scala,File Io,Java Io,Rapture.io,因此,基本上我想从base64字符串内容创建一个临时文件。现在,我正在使用本机JavaIO函数来实现这一点。但是我想使用scala的rapture io库实现同样的结果 所以我的问题是,是否有可能通过rapture io实现这一点,如果有,如何实现 我已经阅读了文档,但不够具体: 这是我的实际代码: import org.apache.commons.codec.binary.Base64 import java.io.FileOutputStream import java.io.File
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
这对你有用吗
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()
你好谢谢你的回答!代码在“val tmpFile…”行中中断,得到:“系统找不到指定的路径”。我在windows环境下。。。我是否应该更改其他文件夹/路由的设置?是否有任何其他替代方案可以同时适用于两种环境?(我计划在Heroku中运行此功能)请参阅未经测试的解决方案的编辑答案。我想您必须根据一些其他信息有条件地导入平台。您可以将平台放在配置文件中,或者以查询System.properties为基础。您还可以根据平台类型有条件地创建fileUrl。Windows路由确实是这样工作的,只需要在“C”之后添加“:”。但事情是这样的。。。Is确实在我的“临时”文件夹中创建了该文件,但所有文件都已“损坏”。我假设“data”是我的base64字符串值,对吗?(“数据”>>tmpFile)您为什么说它已损坏?内容是什么?你期望什么?您可能必须使用类似导入编码的方式更改编码。
UTF-8
My bad:p。我将其改为:val fileByteArray:Array[Byte]=Base64,而不是“data”>>tmpFile。decodeBase64(data)fileByteArray>>tmpFile工作得很好!对于任何类型的文件:图像、音频等,非常感谢!)