скачайте файл gz при нажатии на ссылку и конвертируйте его в csv используя scala - PullRequest
0 голосов
/ 23 мая 2019

Я действительно перебираю синтаксис, здесь нужна помощь ...

У меня есть URL, при нажатии которого загружается файл sample.csv.gz

Пожалуйста, кто-нибудь может мне помочьзаполните синтаксические пробелы ниже:

val outputFile = "C:\\sampleNew" + ".csv"
val inputFile = "C:\\sample.csv.gz"
val fileUrl = "someSamplehttpUrl"

// On hitting this Url, sample.csv.gz file should download at destination 'outputFile'
val in = new URL()(fileUrl).openStream()
Files.copy(in, Paths.get(outputFile), StandardCopyOption.REPLACE_EXISTING)

val filePath = new File(outputFile)
if(filePath.exists()) filePath.delete()
val fw = new FileWriter(outputFile, true)
var bf = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(inputFile)), "UTF-8"))
while (bf.ready()) fw.append(bf.readLine() + "\n")

Я получил несколько ошибок с синтаксисом ... Какие-нибудь исправления здесь?У меня в основном есть запрос http get, который возвращает URL, который я должен открыть, чтобы загрузить этот файл gz

Спасибо!

1 Ответ

1 голос
/ 28 мая 2019

Вот два возможных решения:

import java.io.{File, PrintWriter}
import scala.io.Source

val outputFile = "out.csv"
val inputFile = "/tmp/marks.csv"
val fileUrl = s"file:///$inputFile"

// Method 1, a traditional copy from the input to the output.
val in = Source.fromURL(fileUrl)
val out = new PrintWriter(outputFile)
for (line <- in.getLines)
  out.println(line)

out.close
in.close

Вот один вкладыш, который в основном передает данные от входа к выходу.

import sys.process._
import java.net.URL

val outputFile = "out.csv"
val inputFile = "/tmp/marks.csv"
val fileUrl = s"file:///$inputFile"

// Method 2, pipe the content of the URL to the output file.
new URL(fileUrl) #> new File(outputFile) !!

Вот версия с использованием файлов.copy

val outputFile = "out.csv"
val inputFile = "/tmp/marks.csv"
val fileUrl = s"file:///$inputFile"

import java.nio.file.{Files, Paths, StandardCopyOption}
import java.net.URL

val in = new URL(fileUrl).openStream
val out = Paths.get(outputFile)

Files.copy(in, out, StandardCopyOption.REPLACE_EXISTING)

Надеемся, что один (или более) из вышеперечисленного удовлетворит ваши потребности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...