Невозможно сравнить списки и массив в Scala - PullRequest
0 голосов
/ 27 сентября 2019

Моя постановка проблемы выглядит следующим образом:

1) У меня есть путь до папки.Я должен пройти по этому пути.Проверьте, есть ли какие-либо подпапки и файлы в этом пути.Если да, сопоставьте содержимое папки (списки) с массивом.Если это соответствует, примите это как новый путь.

2) Использование нового пути.Перечислите файлы по этому пути.

Я могу сделать все, кроме сравнения lists и array.Ниже мой код:

import java.text.SimpleDateFormat
import java.util.Calendar
import java.io.File

class ListingDirectories {
  def getListOfDirectories(dir: String): List[File] = {
    val d = new File(dir)
    if (d.exists && d.isDirectory) {
      d.listFiles().filter(_.isDirectory()).toList
    } else {
      List[File]()
    }
  }
  def getListOfFiles(dir: String): List[File] = {
    val d = new File(dir)
    if (d.exists && d.isDirectory()) {
      d.listFiles().filter(_.isFile()).toList
    } else {
      List[File]()
    }
  }
}

object FirstSample {
  def main(args: Array[String]) {
    val ld = new ListingDirectories()
    val directoriesList = ld.getListOfDirectories("C:/Users/Siddheshk2/Desktop/CENSUS").toList
    println(directoriesList + "\n")
    val directoriesListReplaced = directoriesList.toString().replace("//", "/")
    // println(directoriesListReplaced.indexOf("C:/Users/Siddheshk2/Desktop/CENSUS/SAMPLE"))

    var finalString = ""
    var s = Array("C:/Users/Siddheshk2/Desktop/CENSUS/SAMPLE")
    for (x <- s) {
      if (x.equals(directoriesListReplaced)) {
        finalString = s(0)

      } else {
        println("No matching strings")
      }
    }
    val filesList = ld.getListOfFiles(finalString)
    println(filesList.toString())

  }
}  

Мне просто нужно сравнить значения из списка и массива и взять его как новый путь в переменной finalString, чтобы передать следующий метод, который является getListOfFiles.Я понял, так как я возвращаю List[file] в методах, я не могу получить доступ к элементам внутри него.Может ли кто-нибудь помочь мне понять, где я иду не так?ТИА

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Ваш directoriesListReplaced будет строкой, которая выглядит как "List(C:/Users/Siddheshk2/Desktop/CENSUS/SAMPLE,C:/Users/Siddheshk2/Desktop/CENSUS/SAMPLE1,C:/Users/Siddheshk2/Desktop/CENSUS/SAMPLE2)" и s не будет равняться ей.Не совсем понятно, что вы хотите сделать с directoriesListReplaced;возможно это должно быть просто

for (x <- s) {
  if (directoriesList.contains(x)) {
    ...
  } else {
    println("No matching strings")
  }
}
0 голосов
/ 27 сентября 2019

После долгой борьбы я решил ее, используя следующий код:

import java.io.File
object PlayingWithLists {
  def main(ar: Array[String]) {
    var s = "C:/Users/Siddheshk2/Desktop/CENSUS/SAMPLE2"
    var finalValue = ""
    var valuesReplaced = ""
    var filePath = ""
    for (file <- new File("C:/Users/Siddheshk2/Desktop/CENSUS").listFiles) {
      valuesReplaced = file.toString.replace("\\", "/")

      if (valuesReplaced.contains(s.trim)) {
        finalValue = file.toString
      } else {

      }
    }
    for (file <- new File(finalValue).listFiles) {
      filePath = file.toString.trim
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...