diff options
author | James Moger <james.moger@gitblit.com> | 2011-07-11 16:29:20 -0400 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2011-07-11 16:29:20 -0400 |
commit | 5c284113a1a458db0d3440de351034503b3d52b3 (patch) | |
tree | cb8744eaf3c27194632a579785daa96be66a50cd /src/com/gitblit/utils | |
parent | 4ce0a52a7da5951383d5395f85c2e70eacb42f20 (diff) | |
download | gitblit-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.java | 24 |
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;
+ }
}
|