Browse Source

- add Human Readable file size 'parsing' method

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@486146 13f79535-47bb-0310-9956-ffa450edef68
master
Kevin Jackson 19 years ago
parent
commit
6d39a0b71e
1 changed files with 39 additions and 0 deletions
  1. +39
    -0
      src/main/org/apache/tools/ant/util/StringUtils.java

+ 39
- 0
src/main/org/apache/tools/ant/util/StringUtils.java View File

@@ -186,4 +186,43 @@ public final class StringUtils {
} }
return b.toString(); return b.toString();
} }
/**
* Takes a human readable size representation eg 10K
* a long value. Doesn't support 1.1K or other rational values.
* @param humanSize
* @return a long value representation
* @throws Exception
* @since Ant 1.7
*/
public static long parseHumanSizes(String humanSize) throws Exception {
final long KILOBYTE = 1024;
final long MEGABYTE = KILOBYTE * 1024;
final long GIGABYTE = MEGABYTE * 1024;
final long TERABYTE = GIGABYTE * 1024;
final long PETABYTE = TERABYTE * 1024;
String regex = "\\d+[K|M|G|T|P]";
if(humanSize.matches(regex)) {
char c = humanSize.charAt(humanSize.length()-1);
long value = Long.valueOf(humanSize.substring(0, humanSize.length()-1)).longValue();
switch (c) {
case 'K':
return value * KILOBYTE;
case 'M':
return value * MEGABYTE;
case 'G':
return value * GIGABYTE;
case 'T':
return value * TERABYTE;
case 'P':
return value * PETABYTE;
default:
return value;
}
} else if(humanSize.matches("\\d+")) {
return Long.parseLong(humanSize);
} else {
throw new Exception("Couldn't parse string: "+humanSize);
}
}
} }

Loading…
Cancel
Save