diff --git a/.classpath b/.classpath
index 541d5b4..fe2d5f8 100755
--- a/.classpath
+++ b/.classpath
@@ -1,11 +1,7 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/.project b/.project
index bd10b60..7debf88 100755
--- a/.project
+++ b/.project
@@ -12,7 +12,6 @@
- org.scala-ide.sdt.core.scalanature
org.eclipse.jdt.core.javanature
diff --git a/README.md b/README.md
index 1ac7514..57cae7a 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,8 @@
-# treesize
-
-Rudimentäre Quick-and-dirty-Implementation des tree-Kommandos (Linux), einmal in Java und einmal in Scala
-
-* 16-Oct-2019 Erstellt und in svn-Repo hochgeladen
-* 02-Jun-2022 Mit git2svn in lokales git-Repo migriert und in selbstgehosteten Gitea-Server gepusht
-___
+# treesize
+
+Rudimentäre Quick-and-dirty-Implementation des tree-Kommandos (Linux), einmal in Java und einmal in Scala
+
+* 16-Oct-2019 Erstellt und in svn-Repo hochgeladen
+* 02-Jun-2022 Mit git2svn in lokales git-Repo migriert und in selbstgehosteten Gitea-Server gepusht
+___
RS 02-Jun-2022
\ No newline at end of file
diff --git a/src/dev/rsems/treesize/j/Directory.java b/src/dev/rsems/treesize/j/Directory.java
index 0da3f82..874b490 100755
--- a/src/dev/rsems/treesize/j/Directory.java
+++ b/src/dev/rsems/treesize/j/Directory.java
@@ -14,11 +14,12 @@ public class Directory {
Long localSize;
Long totalSize;
List children;
+ File[] files = null;
public Directory(Directory parent, File fsdir) {
this.parent = parent;
this.fsdir = fsdir;
- File[] files = fsdir.listFiles(new FileFilter() {
+ files = fsdir.listFiles(new FileFilter() {
@Override
public boolean accept(File f) {
return f.isFile() && !Files.isSymbolicLink(f.toPath());
diff --git a/src/dev/rsems/treesize/j/Test.java b/src/dev/rsems/treesize/j/Test.java
index e22e7e3..6ba99ae 100755
--- a/src/dev/rsems/treesize/j/Test.java
+++ b/src/dev/rsems/treesize/j/Test.java
@@ -5,6 +5,11 @@ import java.io.IOException;
import java.util.List;
public class Test {
+ //
+ private static String CORNER = " └── ";
+ private static String BLANK = " ";
+ private static String JUNCTION = " ├── ";
+ private static String LINE = " │ ";
static void recurse(Directory d, int level) {
List subs = d.children;
@@ -12,22 +17,21 @@ public class Test {
Directory child = subs.get(i);
Long ts = child.totalSize;
if (true) /* (ts >= 100000000L) */ {
- StringBuilder sb = new StringBuilder(String.format("%,16d ", ts));
+ StringBuilder sb = new StringBuilder(String.format("D %,16d ", ts));
String s = "";
Directory temp = child;
int loop = 0;
while (temp.parent != null) {
- /* ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ */
if (temp.parent.children.indexOf(temp) == temp.parent.children.size() - 1) {
if (loop == 0) {
- s = " └── " + s;
+ s = CORNER + s;
} else {
- s = " " + s;
+ s = BLANK + s;
}
} else if (loop == 0) {
- s = " ├── " + s;
+ s = JUNCTION + s;
} else {
- s = " │ " + s;
+ s = LINE + s;
}
temp = temp.parent;
loop++;
@@ -35,13 +39,47 @@ public class Test {
sb.append(s).append(child.fsdir.getName());
System.out.println(sb.toString());
}
- if (level <= 4) recurse(child, level + 1);
+
+ /* if (level <= 4) */
+
+ recurse(child, level + 1);
+
+ int j = 0;
+ for (File f : child.files) {
+ Long fs = f.length();
+ StringBuilder sb = new StringBuilder(String.format(" %,16d ", fs));
+ String s = "";
+ Directory temp = child;
+ int loop = 0;
+ while (temp.parent != null) {
+ if (temp.parent.children.indexOf(temp) == temp.parent.children.size() - 1) {
+ s = BLANK + s;
+ } else if (loop == 0) {
+ s = JUNCTION + s;
+ } else {
+ s = LINE + s;
+ }
+ temp = temp.parent;
+ loop++;
+ }
+ if (j == child.files.length - 1) {
+ s = s + CORNER;
+ } else {
+ s = s + JUNCTION;
+ }
+ sb.append(s).append(f.getName());
+ System.out.println(sb.toString());
+ j++;
+ }
}
}
public static void main(String[] args) throws IOException {
- Directory d = new Directory(null, new File("/home/rob"));
- String s = String.format("%,16d", d.totalSize) + " " + d.fsdir.getCanonicalPath();
+ String parm = args.length > 0 ? args[0] : ".";
+ File dir = new File(parm);
+// System.out.println(dir.getCanonicalPath() + "\n");
+ Directory d = new Directory(null, dir);
+ String s = String.format("D %,16d", d.totalSize) + " " + d.fsdir.getCanonicalPath();
System.out.println(s);
recurse(d, 1);
}
diff --git a/src/dev/rsems/treesize/s/Directory.scala b/src/dev/rsems/treesize/s/Directory.scala
index 6741af8..fc434d3 100755
--- a/src/dev/rsems/treesize/s/Directory.scala
+++ b/src/dev/rsems/treesize/s/Directory.scala
@@ -1,23 +1,23 @@
-package dev.rsems.treesize.s
-
-import java.io.File
-import java.nio.file.Files
-import scala.collection.mutable.ListBuffer
-
-class Directory(val fsdir: File, val parent: Directory = null, val sort: Boolean = false) {
- private var localSize = 0L
- var children = ListBuffer[Directory]()
- private val files = fsdir.listFiles
- if (files != null)
- localSize = files.filter(f => f.isFile() && !Files.isSymbolicLink(f.toPath)).map(f => f.length).sum
- var totalSize = localSize
- private val dirs = fsdir.listFiles
- if (dirs != null) {
- totalSize += dirs.filter(f => f.isDirectory() && !Files.isSymbolicLink(f.toPath)).map(dir => {
- val subdir = new Directory(dir, this, sort)
- children += subdir
- subdir.totalSize
- }).sum
- if (sort) children = children.sortBy(-_.totalSize)
- }
+package dev.rsems.treesize.s
+
+import java.io.File
+import java.nio.file.Files
+import scala.collection.mutable.ListBuffer
+
+class Directory(val fsdir: File, val parent: Directory = null, val sort: Boolean = false) {
+ private var localSize = 0L
+ var children = ListBuffer[Directory]()
+ private val files = fsdir.listFiles
+ if (files != null)
+ localSize = files.filter(f => f.isFile() && !Files.isSymbolicLink(f.toPath)).map(f => f.length).sum
+ var totalSize = localSize
+ private val dirs = fsdir.listFiles
+ if (dirs != null) {
+ totalSize += dirs.filter(f => f.isDirectory() && !Files.isSymbolicLink(f.toPath)).map(dir => {
+ val subdir = new Directory(dir, this, sort)
+ children += subdir
+ subdir.totalSize
+ }).sum
+ if (sort) children = children.sortBy(-_.totalSize)
+ }
}
\ No newline at end of file
diff --git a/src/dev/rsems/treesize/s/Test.scala b/src/dev/rsems/treesize/s/Test.scala
index 4dbf534..21feda3 100755
--- a/src/dev/rsems/treesize/s/Test.scala
+++ b/src/dev/rsems/treesize/s/Test.scala
@@ -1,48 +1,48 @@
-package dev.rsems.treesize.s
-
-import java.io.File
-
-object Test extends App {
- // ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼
- val LineUpAndRight = " \u2514\u2500\u2500 "; // " └── "
- val LineBlank = " ";
- val LineVerticalAndRight = " \u251c\u2500\u2500 "; // " ├── "
- val LineVertical = " \u2502 "; // " │ "
-
- def recurse(d: Directory, level: Int) {
- for (child <- d.children) {
- val ts = child.totalSize
- val sb = new StringBuilder("%,16d ".format(ts))
- var s = ""
- var temp = child
- var loop = 0
- while (temp.parent != null) {
- if (temp.parent.children.indexOf(temp) == temp.parent.children.size - 1) {
- if (loop == 0) {
- s = "└─ " + s
- } else {
- s = " " + s
- }
- } else if (loop == 0) {
- s = "├─ " + s
- } else {
- s = "│ " + s
- }
- temp = temp.parent
- loop += 1
- }
- sb.append(s).append(child.fsdir.getName)
- println(sb.toString)
-
- // if (level <= 4)
-
- recurse(child, level + 1)
-
- }
- }
-
- val dir = new Directory(new File("/home/rob"))
- val s = "%,16d".format(dir.totalSize) + " " + dir.fsdir.getCanonicalPath
- println(s)
- recurse(dir, 1)
+package dev.rsems.treesize.s
+
+import java.io.File
+
+object Test extends App {
+ // ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼
+ val LineUpAndRight = " \u2514\u2500\u2500 "; // " └── "
+ val LineBlank = " ";
+ val LineVerticalAndRight = " \u251c\u2500\u2500 "; // " ├── "
+ val LineVertical = " \u2502 "; // " │ "
+
+ def recurse(d: Directory, level: Int) {
+ for (child <- d.children) {
+ val ts = child.totalSize
+ val sb = new StringBuilder("%,16d ".format(ts))
+ var s = ""
+ var temp = child
+ var loop = 0
+ while (temp.parent != null) {
+ if (temp.parent.children.indexOf(temp) == temp.parent.children.size - 1) {
+ if (loop == 0) {
+ s = "└─ " + s
+ } else {
+ s = " " + s
+ }
+ } else if (loop == 0) {
+ s = "├─ " + s
+ } else {
+ s = "│ " + s
+ }
+ temp = temp.parent
+ loop += 1
+ }
+ sb.append(s).append(child.fsdir.getName)
+ println(sb.toString)
+
+ // if (level <= 4)
+
+ recurse(child, level + 1)
+
+ }
+ }
+
+ val dir = new Directory(new File("/home/rob"))
+ val s = "%,16d".format(dir.totalSize) + " " + dir.fsdir.getCanonicalPath
+ println(s)
+ recurse(dir, 1)
}
\ No newline at end of file