From 76bf6ff0c8442c6811c942280e9a2c514a379daf Mon Sep 17 00:00:00 2001 From: Alexei Khlebnikov Date: Thu, 19 Jul 2018 18:12:07 +0200 Subject: [PATCH] dir: add methods getSize() and getCompressedSize() --- .../main/java/brut/directory/Directory.java | 4 ++++ .../java/brut/directory/FileDirectory.java | 16 +++++++++++++ .../java/brut/directory/ZipRODirectory.java | 24 +++++++++++++++++-- 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/brut.j.dir/src/main/java/brut/directory/Directory.java b/brut.j.dir/src/main/java/brut/directory/Directory.java index 32e93d04..146ee8ec 100644 --- a/brut.j.dir/src/main/java/brut/directory/Directory.java +++ b/brut.j.dir/src/main/java/brut/directory/Directory.java @@ -47,6 +47,10 @@ public interface Directory { public void copyToDir(File out, String fileName) throws DirectoryException; + public long getSize(String fileName) + throws DirectoryException; + public long getCompressedSize(String fileName) + throws DirectoryException; public int getCompressionLevel(String fileName) throws DirectoryException; diff --git a/brut.j.dir/src/main/java/brut/directory/FileDirectory.java b/brut.j.dir/src/main/java/brut/directory/FileDirectory.java index b68d4347..7414eafa 100644 --- a/brut.j.dir/src/main/java/brut/directory/FileDirectory.java +++ b/brut.j.dir/src/main/java/brut/directory/FileDirectory.java @@ -40,6 +40,22 @@ public class FileDirectory extends AbstractDirectory { mDir = dir; } + @Override + public long getSize(String fileName) + throws DirectoryException { + File file = new File(generatePath(fileName)); + if (! file.isFile()) { + throw new DirectoryException("file must be a file: " + file); + } + return file.length(); + } + + @Override + public long getCompressedSize(String fileName) + throws DirectoryException { + return getSize(fileName); + } + @Override protected AbstractDirectory createDirLocal(String name) throws DirectoryException { File dir = new File(generatePath(name)); diff --git a/brut.j.dir/src/main/java/brut/directory/ZipRODirectory.java b/brut.j.dir/src/main/java/brut/directory/ZipRODirectory.java index c781e8d9..5dd56949 100644 --- a/brut.j.dir/src/main/java/brut/directory/ZipRODirectory.java +++ b/brut.j.dir/src/main/java/brut/directory/ZipRODirectory.java @@ -100,14 +100,34 @@ public class ZipRODirectory extends AbstractDirectory { throw new UnsupportedOperationException(); } + @Override + public long getSize(String fileName) + throws DirectoryException { + ZipEntry entry = getZipFileEntry(fileName); + return entry.getSize(); + } + + @Override + public long getCompressedSize(String fileName) + throws DirectoryException { + ZipEntry entry = getZipFileEntry(fileName); + return entry.getCompressedSize(); + } + @Override public int getCompressionLevel(String fileName) throws DirectoryException { - ZipEntry entry = mZipFile.getEntry(fileName); + ZipEntry entry = getZipFileEntry(fileName); + return entry.getMethod(); + } + + private ZipEntry getZipFileEntry(String fileName) + throws DirectoryException { + ZipEntry entry = mZipFile.getEntry(fileName); if (entry == null) { throw new PathNotExist("Entry not found: " + fileName); } - return entry.getMethod(); + return entry; } private void loadAll() {