Scala: удалить каталог рекурсивно не работает - PullRequest
1 голос
/ 12 октября 2019

Я ищу решение от Гарретта Холла из Рекурсивное удаление каталога в Scala

import scala.reflect.io.Directory
import java.io._

val dir : String = "/tmp/tempdir_prefix5708675182947835848"

def deleteRecursively(file: File): Unit = {
  if (file.isDirectory) {
    file.listFiles.foreach(deleteRecursively)
  }
  if (file.exists && !file.delete) {
    throw new Exception(s"Unable to delete ${file.getAbsolutePath}")
  }
}

deleteRecursively(dir.asInstanceOf(File))

это выдает ошибку

con@VB:~/Scripts/scala$ scala delete_dir.scala
/home/con/Scripts/scala/delete_dir.scala:15: error: T0 does not take parameters
deleteRecursively(dir.asInstanceOf(File))
                                  ^
one error found

Я также пробовал

deleteRecursively(dir))

но это дает ошибку

con@VB:~/Scripts/scala$ scala delete_dir.scala
/home/con/Scripts/scala/delete_dir.scala:15: error: type mismatch;
 found   : String
 required: java.io.File
deleteRecursively(dir)

, а также deleteRecursively(File(dir))

, но это дает

con@VB:~/Scripts/scala$ scala delete_dir.scala
/home/con/Scripts/scala/delete_dir.scala:15: error: object java.io.File is not a value
deleteRecursively(File(dir))

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

Как я могу изменить код, чтобы я мог передать каталог какрекурсивно удаляемая строка?

1 Ответ

1 голос
/ 12 октября 2019

Я не тестировал решение на своей машине, но вы, похоже, сделали очень легко исправить ошибку. Ваша deleteRecursively функция принимает входные данные типа File, поэтому вам нужно передать аргумент типа File.

Похоже, что с самой функцией deleteRecursively все в порядке.

val dir : File = new File("/tmp/tempdir_prefix5708675182947835848")

deleteRecursively(dir)

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

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