Scala удалить все файлы, но не каталог - PullRequest
1 голос
/ 05 июня 2019

У меня есть каталог и подпапка в нем. Каталог содержит 5 файлов и один подкаталог. Мне нужно очистить подпапку и удалить 3 файла из 5.

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

  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 ]

1 голос
/ 05 июня 2019

Вы можете удалить файлы из подкаталога (но не самого каталога) следующим образом:

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}")
     }
  }
}
1 голос
/ 05 июня 2019

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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...