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() {