2014-11-03 85 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

相關問題