[编辑]我删除了我的错综复杂且严重错误的问题,这样就不会影响下面非常简洁和正确的答案.鉴于(令人惊讶的)难以找到一个执行这项令人难以置信的常见任务的在线示例,我希望Yoni能够为他的回应获得更多优势.
所以...问题简而言之......
如何使用Apache.Commons将文件上载到某个目标.我在Android中使用它并上传到PHP脚本,但显然它可以在任何Java程序和任何基于HTTP的侦听器中工作.
我正在使用Apache Commons CLI库进行命令行解析.它适用于String值选项,但我不确定如何干净地处理布尔值的命令行标志.我试过这个:
CommandLineParser parser = new GnuParser();
Options options = new Options();
options.addOption(new Option("parseOnly", "Only parse"));
CommandLine cl = parser.parse( options, args );
if( cl.hasOption( "parseOnly" ) )
PARSE_ONLY = (Boolean) cl.getParsedOptionValue( "parseOnly" );
Run Code Online (Sandbox Code Playgroud)
但是这NullPointerException在文件行上失败了,因为cl.getParsedOptionValue()返回null并且无法转换为Boolean.
cl.hasOption( "parseOnly" )返回true或false,但是从文档中不清楚这意味着什么 - 它是否意味着用户指定它并且它可能是true还是false?或者它是否意味着标志被激活?如果你想让一个标志默认为true,并让用户将其关闭(如其他getopt解析器中的--noParseOnly),该怎么办?
我会感谢人们提出的任何建议,包括RTFM - 我确信这是一个很好的基础.谢谢.
刚开始使用Apache Commons StringEscapeUtils.
根据http://www.w3schools.com/tags/ref_entities.asp,Ö应该对应Ö.然而,
System.out.println(StringEscapeUtils.unescapeHtml4("Ö"));
Run Code Online (Sandbox Code Playgroud)
版画
×
Run Code Online (Sandbox Code Playgroud)
这是一个错误吗?或者我错过了什么?
我想使用WordUtils.capitalizeFully但不确定它对其他语言的作用.哎呀,我甚至不确定中国人是否有大/小写.我们还使用瑞典语,德语和俄语.
有人尝试过吗?
我开发了一个Android应用程序,它将以压缩格式消耗大量数据.我曾经解压缩它,当我解析解压缩文件时,它会显示outofmemory错误,因为堆大小增加到125MB.我正在使用apache commons.io来获取byte [] b而我正在给String s = new String(b);我尝试了Stringbuilder但我无法获得该逻辑.有没有其他方法可以安全地将byte []转换为android中的String?
我正在运行多线程导入,运行大约1-2个小时.并在导入之前,将数据放入表中.我正在查
if(debug.isEnabled())
logger.debug("Object="+MyObject);
Run Code Online (Sandbox Code Playgroud)
其中MyObject使用ToStringBuilder的toString方法.
java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.Arrays.copyOfRange(Arrays.java:2694)
at java.lang.String.<init>(String.java:203)
at java.lang.StringBuffer.toString(StringBuffer.java:561)
at org.apache.commons.lang3.builder.ToStringBuilder.toString(ToStringBuilder.java:1063)
Run Code Online (Sandbox Code Playgroud)
我认为toStringBuilder导致了这个问题.我对么?如果是,有什么方法可以解决这个问题?
我不确定这个问题是否属于这里.我编写了以下方法将对象强制转换为特定类型.
private static <T> T cast(Object obj) {
return (T) (obj);
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么我在Guava或Apache Commons中找不到这样的方法?我错过了什么吗?
谢谢,
Venk
我想好像有可能/由Apache的commons-configuration支持从属性文件中获取一个属性作为映射
到目前为止,我已经通过以下代码段间接地做到了这一点
Map<String, T> map = new LinkedHashMap<>();
Configuration subset = config.subset(key);
if (!subset.isEmpty()) {
Iterator it = subset.getKeys();
while (it.hasNext()) {
String k = (String) it.next();
//noinspection unchecked
T v = (T) subset.getProperty(k);
map.put(k, v);
}
}
return map;
Run Code Online (Sandbox Code Playgroud)
有谁知道比这更直接的方法?
非常感谢你
我使用Apache Commons lib有以下代码:
public static List<Address> addressesHasType(final List<Address> addresses, final AddressType... types) {
return (List<Address>) CollectionUtils.select(addresses, new Predicate() {
@Override
public boolean evaluate(final Object object) {
boolean isContains = false;
for (int i = 0; i < types.length && !isContains; i++) {
isContains = ((Address) object).getTypes().contains(types[i]);
}
return isContains;
}
});
}
Run Code Online (Sandbox Code Playgroud)
我试图重构它只使用没有Apache Commons lib的lambda和Java 8,如下所示:
List<Address> addressList = addresses.stream()
.filter(a -> a.getTypes().contains(types)).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
但这份名单最终变得空洞.我尝试使用findFirst()但它不返回List而是返回Optional对象.
addressList2 = addresses.stream()
.filter(a -> a.getTypes().contains(types)).findFirst();
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?
我有一张地图,我需要用我的枚举来验证地图的键集.我有一个枚举类,如下所示:
public enum Tag {
rename, duplicate, process, limit, encode, decode;
};
Run Code Online (Sandbox Code Playgroud)
现在keyset,map应该包含来自enum的值.如果我的键集包含枚举中没有的值,那么我想抛出IllegalArgumentException枚举中缺少的值.
以下是我的代码:
public Processor(Map<String, String> tasks) {
Set<String> keyset = tasks.keySet();
for (String tag : keyset)
checkArgument(!EnumUtils.isValidEnum(Tag.class, tag), "unknown tag found '%s'.", tag);
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我正在迭代keyset并进行Preconditions.checkArgument检查.如果它不存在那么就会抛出IllegalArgumentException.我确信抛出的信息可以改进.
我的问题是:与我正在做的相比,有没有更好的方法做同样的事情?我是否必须keyset在for循环中迭代才能进行检查?或者是否有任何一个班轮或任何其他更好的方法来进行此验证?
我使用的是Java7.
apache-commons ×10
java ×8
android ×2
guava ×2
bytearray ×1
enums ×1
file-upload ×1
getopt ×1
html ×1
java-8 ×1
java-stream ×1
lambda ×1
string ×1