Как извлечь расширение файла из строки scala - PullRequest
2 голосов
/ 06 мая 2020

Я пытаюсь извлечь расширение файла из пути к файлу, используя метод ниже.

import java.nio.file.Paths
val filename_path = "s3://bucket-name/filepath/file.csv" 

// Convert the path string to a Path object and get the "base name" from that path.

val fileName = Paths.get(filename_path).getFileName

val extension = fileName.toString.split("\\.").last 

Вышеуказанные коды работают с штрафами для пути, который не имеет сжатия в расширении файла. если я передам путь к файлу как

case 1 : val filename_path_1 = "s3://bucket-name/filepath/file.csv.gz" 
case 2 : val filename_path_2 = "s3://bucket-name/filepath/file.csv" 
case 3 : val filename_path_2 = "s3://bucket-name/filepath/file.parquet"
case 4 : val filename_path_2 = "s3://bucket-name/filepath/file.parquet.gz"
case 5 : val filename_path_2 = "s3://bucket-name/filepath/gz.parquet"

в приведенном выше случае, я хотел бы получить вывод, как показано ниже:

case 1 -> csv
case 2 -> csv
case 3 -> parquet
case 4 -> parquet
case 5 -> parquet

С уважением, mahi

1 Ответ

1 голос
/ 06 мая 2020

Вы можете попробовать этот подход

def getExtension(extension: String): String = {
    match extension {
        case(csv) if csv.contains("csv") => "csv"
        case(parquet) if parquet.contains("parquet") => "parquet"
        ....
        case(validExt) if validExt.contains("validExt") => "validExt"
        case _ => // rest of the cases that you can code as ".tmp or .xml or ...."
    }
}
...