我正在寻找Delete directory recursively in Scala的Garrett Hall提供的解决方案
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的新手,但找不到解决方案。我觉得原始的海报忘记了要添加的东西,就像他希望所有人都知道的那样,但是我不是,因为我经验不足。
如何修改代码,以便将目录作为字符串传递以递归删除?
答案 0 :(得分:1)
我还没有在自己的机器上测试该解决方案,但是您似乎犯了一个非常容易修复的错误。您的deleteRecursively
函数接受类型为File
的输入,因此您需要传递类型为File
的参数。
deleteRecursively
函数本身似乎没有什么问题。
val dir : File = new File("/tmp/tempdir_prefix5708675182947835848")
deleteRecursively(dir)
如果此修复不能解决您的问题,请在评论中让我知道。很高兴与您合作解决这个问题。