У меня есть каталог и подпапка в нем. Каталог содержит 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/*"))




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