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