more efficient directory traversal

pull/62/head
Zlatin Balevsky 2021-06-12 16:07:52 +01:00
parent cbf66b620e
commit 49787fb4dc
No known key found for this signature in database
GPG Key ID: A72832072D525E41
1 changed files with 13 additions and 7 deletions

View File

@ -1,5 +1,8 @@
package com.muwire.core.files
import java.nio.file.DirectoryStream
import java.nio.file.Files
import java.nio.file.Path
import java.util.stream.Collectors
import java.util.stream.Stream
@ -263,15 +266,18 @@ class FileManager {
saveNegativeTree()
if (!e.deleted) {
List<SharedFile> unsharedFiles = new ArrayList<>()
e.directory.listFiles().each {
if (it.isDirectory())
eventBus.publish(new DirectoryUnsharedEvent(directory : it))
try(DirectoryStream<Path> directoryStream = Files.newDirectoryStream(e.directory.toPath())) {
for (Path p : directoryStream) {
File file = p.toFile()
if (file.isDirectory())
eventBus.publish(new DirectoryUnsharedEvent(directory : file))
else {
SharedFile sf = fileToSharedFile.get(it)
SharedFile sf = fileToSharedFile.get(file)
if (sf != null)
unsharedFiles.add(sf)
}
}
}
eventBus.publish(new FileUnsharedEvent(unsharedFiles : unsharedFiles.toArray(new SharedFile[0])))
} else {
def cb = new DirDeletionCallback()