Scala删除所有文件,但不删除目录

时间:2019-06-05 15:41:52

标签: java scala file java.nio.file

我有一个目录和子文件夹。 该目录包含5个文件和1个子目录。 我需要清空子文件夹并从5个文件中删除3个文件。

当前,我正在使用以下代码删除文件,但子文件夹没有变空。 请建议

  Files.deleteIfExists(Paths.get("src/main/tempDir/doc-topics-new.txt"))
  Files.deleteIfExists(Paths.get("src/main/tempDir/new_corpus.mallet"))
  Files.deleteIfExists(Paths.get("src/main/tempDir/corpus.mallet"))
  Files.deleteIfExists(Paths.get("src/main/tempDir/sub_directory/*"))

2 个答案:

答案 0 :(得分:1)

better-files支持使用file.clear()删除目录中的所有子项,而文件可以使用file.delete()删除。这是一个有效的例子

import better.files._

object Hello extends App {
    val subdirectory = file"/path/to/subdirectory"
    subDirectory.clear()

    val file1 = file"/path/to/file1.txt"
    file1.delete()
}

我们需要以下依赖项

libraryDependencies += "com.github.pathikrit" %% "better-files" % "3.8.0"

答案 1 :(得分:1)

您可以像这样从子目录(而不是目录本身)删除文件:

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