Ответ 1
Сбросьте буфер и закройте выходной поток.
В основном у меня есть url/ссылка на текстовый файл онлайн, и я пытаюсь загрузить его локально. По какой-то причине текстовый файл, который создается/загружен, пуст. Открыта для любых предложений. Спасибо!
def downloadFile(token: String, fileToDownload: String) {
val url = new URL("http://randomwebsite.com/docs?t=" + token + "&p=tsr%2F" + fileToDownload)
val connection = url.openConnection().asInstanceOf[HttpURLConnection]
connection.setRequestMethod("GET")
val in: InputStream = connection.getInputStream
val fileToDownloadAs = new java.io.File("src/test/resources/testingUpload1.txt")
val out: OutputStream = new BufferedOutputStream(new FileOutputStream(fileToDownloadAs))
val byteArray = Stream.continually(in.read).takeWhile(-1 !=).map(_.toByte).toArray
out.write(byteArray)
}
Сбросьте буфер и закройте выходной поток.
Я знаю, что это старый вопрос, но я просто натолкнулся на действительно хороший способ сделать это:
import sys.process._
import java.net.URL
import java.io.File
def fileDownloader(url: String, filename: String) = {
new URL(url) #> new File(filename) !!
}
Надеюсь, это поможет. Источник.
Теперь вы можете просто использовать функцию fileDownloader для загрузки файлов.
fileDownloader("http://ir.dcs.gla.ac.uk/resources/linguistic_utils/stop_words", "stop-words-en.txt")
Вот наивная реализация scala.io.Source.fromURL
и java.io.FileWriter
def downloadFile(token: String, fileToDownload: String) {
try {
val src = scala.io.Source.fromURL("http://randomwebsite.com/docs?t=" + token + "&p=tsr%2F" + fileToDownload)
val out = new java.io.FileWriter("src/test/resources/testingUpload1.txt")
out.write(src.mkString)
out.close
} catch {
case e: java.io.IOException => "error occured"
}
}
Ваш код работает для меня... Существуют и другие возможности, которые делают пустой файл.