Scala удалить все файлы, но не каталог

У меня есть каталог и подпапка в нем. Каталог содержит 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/*"))
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
1 453
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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"

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

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}")
     }
  }
}

Другие вопросы по теме