From: <ls...@us...> - 2011-08-21 15:25:26
|
Revision: 5853 http://jnode.svn.sourceforge.net/jnode/?rev=5853&view=rev Author: lsantha Date: 2011-08-21 15:25:19 +0000 (Sun, 21 Aug 2011) Log Message: ----------- Fixes to file size display in 'dir' command. Modified Paths: -------------- trunk/cli/src/commands/org/jnode/command/file/DirCommand.java Modified: trunk/cli/src/commands/org/jnode/command/file/DirCommand.java =================================================================== --- trunk/cli/src/commands/org/jnode/command/file/DirCommand.java 2011-08-21 15:23:35 UTC (rev 5852) +++ trunk/cli/src/commands/org/jnode/command/file/DirCommand.java 2011-08-21 15:25:19 UTC (rev 5853) @@ -42,14 +42,17 @@ * @author cr...@jn... */ public class DirCommand extends AbstractCommand { + private static final String SEPARATOR = " "; + private static final int SEPARATOR_SIZE = SEPARATOR.length(); private static final int LEFT_MARGIN = 14; - private static final SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd HH:mm"); - private static final String help_path = "the file or directory to list"; - private static final String help_humanReadable = "with -l, print sizes in human readable format (e.g., 1K 234M 2G)"; + private static final String help_humanReadable = "print sizes in human readable format (e.g. 1K, 234M, 2G)"; private static final String help_super = "List files or directories"; private static final String fmt_no_path = "No such path: %s%n"; + private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy.MM.dd HH:mm"); + private final DecimalFormat decimalFormat = new DecimalFormat("###0.00"); + private final FileArgument argPath; private final FlagArgument humanReadableArg; @@ -101,8 +104,7 @@ }); StringBuilder sb = new StringBuilder(); Date lastModified = new Date(); - for (int i = 0; i < list.length; i++) { - File f = list[i]; + for (File f : list) { if (f.exists()) { sb.setLength(0); lastModified.setTime(f.lastModified()); @@ -111,15 +113,15 @@ int cnt = LEFT_MARGIN - ln.length(); for (int j = 0; j < cnt; j++) sb.append(' '); sb.append(ln); - sb.append(" "); - sb.append(df.format(lastModified)); - sb.append(" "); + sb.append(SEPARATOR); + sb.append(dateFormat.format(lastModified)); + sb.append(SEPARATOR); sb.append(f.getName()); } else { - for (int j = 0; j < LEFT_MARGIN + 3; j++, sb.append(' ')) - ; - sb.append(df.format(lastModified)); - sb.append(" ["); + for (int j = 0; j < LEFT_MARGIN + SEPARATOR_SIZE; j++) sb.append(' '); + sb.append(dateFormat.format(lastModified)); + sb.append(SEPARATOR); + sb.append("["); sb.append(f.getName()); sb.append(']'); } @@ -132,13 +134,19 @@ private static final String[] units = {"B", "K", "M", "G", "T", "P", "E", "Z", "Y"}; - protected String formatSize(double bytes) { + + protected String formatSize(long bytes) { if (humanReadableArg.isSet()) { - int index; - for (index = 0; bytes >= 1024; index++) bytes = bytes / 1024; - DecimalFormat df = new DecimalFormat("###0.0"); - return df.format(bytes) + units[index]; - } else + if (bytes >= 1024) { + double dbytes = (double) bytes; + int index; + for (index = 0; dbytes >= 1024; index++) dbytes = dbytes / 1024; + return decimalFormat.format(dbytes) + units[index]; + } else { + return bytes + "B"; + } + } else { return bytes + "B"; + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |