diff --git a/main/filesystem-crypto/src/main/java/org/cryptomator/filesystem/crypto/CryptoFolder.java b/main/filesystem-crypto/src/main/java/org/cryptomator/filesystem/crypto/CryptoFolder.java index 3f19353e4..c8228535c 100644 --- a/main/filesystem-crypto/src/main/java/org/cryptomator/filesystem/crypto/CryptoFolder.java +++ b/main/filesystem-crypto/src/main/java/org/cryptomator/filesystem/crypto/CryptoFolder.java @@ -80,8 +80,8 @@ class CryptoFolder extends CryptoNode implements Folder { @Override public Stream files() { - assert forceGetPhysicalFolder().exists(); - return forceGetPhysicalFolder().files().map(File::name).filter(isEncryptedFileName()).map(this::decryptChildFileName).map(this::file); + final Stream files = physicalFolder().filter(Folder::exists).map(Folder::files).orElse(Stream.empty()); + return files.map(File::name).filter(isEncryptedFileName()).map(this::decryptChildFileName).map(this::file); } private Predicate isEncryptedFileName() { @@ -104,8 +104,8 @@ class CryptoFolder extends CryptoNode implements Folder { @Override public Stream folders() { - assert forceGetPhysicalFolder().exists(); - return forceGetPhysicalFolder().files().map(File::name).filter(isEncryptedDirectoryName()).map(this::decryptChildFolderName).map(this::folder); + final Stream files = physicalFolder().filter(Folder::exists).map(Folder::files).orElse(Stream.empty()); + return files.map(File::name).filter(isEncryptedDirectoryName()).map(this::decryptChildFolderName).map(this::folder); } private Predicate isEncryptedDirectoryName() { @@ -190,7 +190,7 @@ class CryptoFolder extends CryptoNode implements Folder { Folder physicalFolder = forceGetPhysicalFolder(); physicalFolder.delete(); Folder physicalFolderParent = physicalFolder.parent().get(); - if (physicalFolderParent.folders().count() == 0) { + if (physicalFolderParent.exists() && physicalFolderParent.folders().count() == 0) { physicalFolderParent.delete(); } forceGetPhysicalFile().delete();