??xml version="1.0" encoding="utf-8" standalone="yes"?>
Ҏ(gu)CLI的逻辑Q每一个命令行的处理都可以分ؓ(f)3个步骤:(x)定义、解析、交?
①定义:(x)定义命o(h)行的各种选项属?包括~写、全写、是否必R是否带参数、参C数限?
②解析:(x)使用解析器对命o(h)行选项列表q行解析
③交互:(x)从解析好的命令行查询用户输入的参数值ƈq行处理 阅读全文
]]>
①类型:(x)DirectoryFileFilter、FileFileFilter
②大:(x)EmptyFileFilter、SizeFileFilter
③时_(d)(x)AgeFileFilter
④名Uͼ(x)NameFileFilter、PrefixFileFilter、SuffixFileFilter、RegexFileFilter、WildcardFileFilter
⑤读写属性:(x)CanReadFileFilter、CanWriteFileFilter
⑥隐藏属性:(x)HiddenFileFilter
2.逻辑关系qo(h)?
=============================================
①逻辑与:(x)AndFileFilter
②逻辑或:(x)OrFileFilter
③逻辑非:(x)NotFileFilter
④永?假:(x)TrueFileFilter、FalseFil 阅读全文
]]>
q两个搜索类都是以内部类的方式嵌入客L(fng)的,客户端接收客L(fng)参数Q然后通过一个后台线E来q行搜烦(ch)Q等待子U程完成搜烦(ch)?joinҎ(gu))Q再打印搜烦(ch)l果?
注意q个q程是可以被cancel的。cancel主要?U情c(din)外部cancelQ外部线E通过调用内部cȝcancel()Ҏ(gu)。内部cancelQ在handleDirectory、handleFile中主动抛出CancelException?
walkҎ(gu)在每ơ执行前、后都会(x)(g)查当前是否有cancel指o(h)发出(checkIfCancelled ---> handleIsCancelled)Q如果有那么默认立刻抛出CancelExceptionQ然后调用handleCancelledҎ(gu)?nbsp; 阅读全文
]]>
?
同一个源文g(15M左右)使用不同的方式读入,一U是d后构造成一个StringQ另外一个是d后构造成一个List。然后再调用
writeLines(File, String)和writeLines(File, Collection)写入。下面是试比较的结果:(x)
Read and write by string format
File sizes(bytes): 15661680
Content read(bytes): 15661680
Time costing(ms) on reading: 2047
Time costing(ms) on writing: 1016
Read and write by collection format
File sizes(bytes): 15661680
File read(lines): 1782615
Time costing(ms) on reading: 2047
Time costing(ms) on writing: 533437
效率相差之多! 我的试环境如下Q?br />
OSQWin XP SP4
CPUQIntel Core(TM) 2 Duo CPU
内存Q?00M(虚拟机分?
JDKQJDK 5.0 (JVM内存分配Q?Xms64m -Xmx512m)
试文gQ?5.295M (是一个IP地址文gQd1782615?
在读斚w旉居然相当(q里面应该有操作pȝ层面的缓冲作用,我单独地试时第2个方式LW一个慢1/3左右)。而在写方面性能直是天壤之别啊:(x)533437/1016 ?25倍?/font>
虽然我这个测试还是不严}的,但是从方法实现过E和原理来看Q两者性能差异存在必然的因素:(x)
①以Collection方式L造的Q在d的过E中生成多个StringQ而生成String是一耗时的工?br />
②以Collection方式d的,首先要P代这个CollectionQ然后每ơ调用Collection中的元素的toString()Ҏ(gu)Q造成多次的堆栈操?/font>