summaryrefslogtreecommitdiffstats
path: root/src/com/gitblit/utils
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2011-07-11 16:29:20 -0400
committerJames Moger <james.moger@gitblit.com>2011-07-11 16:29:20 -0400
commit5c284113a1a458db0d3440de351034503b3d52b3 (patch)
treecb8744eaf3c27194632a579785daa96be66a50cd /src/com/gitblit/utils
parent4ce0a52a7da5951383d5395f85c2e70eacb42f20 (diff)
downloadgitblit-5c284113a1a458db0d3440de351034503b3d52b3.tar.gz
gitblit-5c284113a1a458db0d3440de351034503b3d52b3.zip
Optionally display repository on-disk size on repositories page.
Diffstat (limited to 'src/com/gitblit/utils')
-rw-r--r--src/com/gitblit/utils/FileUtils.java24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/com/gitblit/utils/FileUtils.java b/src/com/gitblit/utils/FileUtils.java
index 468b2a80..ce8cdf94 100644
--- a/src/com/gitblit/utils/FileUtils.java
+++ b/src/com/gitblit/utils/FileUtils.java
@@ -56,4 +56,28 @@ public class FileUtils {
}
return sb.toString();
}
+
+ /**
+ * Recursively traverses a folder and its subfolders to calculate the total
+ * size in bytes.
+ *
+ * @param directory
+ * @return folder size in bytes
+ */
+ public static long folderSize(File directory) {
+ if (directory == null || !directory.exists()) {
+ return -1;
+ }
+ if (directory.isFile()) {
+ return directory.length();
+ }
+ long length = 0;
+ for (File file : directory.listFiles()) {
+ if (file.isFile())
+ length += file.length();
+ else
+ length += folderSize(file);
+ }
+ return length;
+ }
}