Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 使用rapture io从base64字符串创建临时文件_Scala_File Io_Java Io_Rapture.io - Fatal编程技术网

Scala 使用rapture io从base64字符串创建临时文件

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

因此,基本上我想从base64字符串内容创建一个临时文件。现在,我正在使用本机JavaIO函数来实现这一点。但是我想使用scala的rapture io库实现同样的结果

所以我的问题是,是否有可能通过rapture io实现这一点,如果有,如何实现

我已经阅读了文档,但不够具体:

这是我的实际代码:

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工作得很好!对于任何类型的文件:图像、音频等,非常感谢!)