2014-11-03 2 views
6

Also im Grunde möchte ich eine temporäre Datei aus einem Base64-String Inhalt erstellen. Im Moment mache ich das mit nativen Java-io-Funktionen. Aber ich würde gerne das gleiche Ergebnis mit der rapture-io-Bibliothek für scala erreichen.Erstellen Sie eine temporäre Datei aus einem Base64-String mit rapture-io

Also meine Frage wäre, ist es möglich, dies mit Begeisterung zu erreichen, und wenn ja, wie?

Ich ging bereits durch die Dokumentation, ist aber nicht spezifisch genug:

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

Hier ist meine eigentliche Code:

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 

Antwort

1

macht diese Arbeit für Sie?

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() 

Nicht getestet unter Windows. Möglicherweise müssen Sie ein anderes Trennzeichen verwenden, z. \\ anstelle von/

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

Hallo! Danke für deine Antwort! Der Code unterbricht die Zeile "val tmpFile ..." und erhält Folgendes: "Das System kann den angegebenen Pfad nicht finden". Ich bin unter Windows env ... Sollte ich das für einen anderen Ordner/Route ändern? Jede andere Alternative, die für beide envs funktionieren könnte? (Ich plane, dies in Heroku auszuführen) – mayacr86

+0

Siehe bearbeitete Antwort für eine ungeprüfte Lösung. Ich könnte mir vorstellen, dass Sie die Plattform aufgrund einiger anderer Informationen bedingt importieren müssen. Sie könnten die Plattform in eine Konfigurationsdatei einfügen oder sie von der Abfrage von System.properties ableiten. Sie könnten auch die DateiUrl basierend auf dem Plattformtyp bedingt erstellen. – bearrito

+0

Windows-Route hat so funktioniert, nur benötigt, um das ':' nach dem 'C' hinzuzufügen. Aber hier ist die Sache ... Ist die Datei in meinem 'Temp' Ordner erstellen, aber alle von ihnen sind "beschädigt". Ich nehme an, "Daten" ist mein Base64-String-Wert, oder? ("Daten" >> tmpFile) – mayacr86

Verwandte Themen