2014-11-03 1 views
6

Итак, в основном я хочу создать временный файл из содержимого строки base6. Прямо сейчас, я делаю это с собственными функциями java-io. Но я хотел бы добиться того же результата, используя библиотеку rapture-io для scala.Создайте временный файл из строки base64 с rapture-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 ...», получая: «Система не может найти указанный путь». Я под окнами env ... Должен ли я изменить это для любой другой папки/маршрута? Любая другая альтернатива, которая может работать для обоих? (Я планирую запустить это в Heroku) – mayacr86

+0

См. Отредактированный ответ для непроверенного решения. Я предполагаю, что вам придется условно импортировать платформу на основе другой информации. Вы можете поместить платформу в файл конфигурации или отложить ее от запроса System.properties. Вы также можете условно создать файлUrl на основе типа платформы. – bearrito

+0

Windows route действительно работал так, просто нужно было добавить ':' после 'C'. Но вот что ... Я создаю файл в своей папке «Temp», но все они «повреждены». Я предполагаю, что «данные» - это мое значение строки base64, правильно? («data» >> tmpFile) – mayacr86