【問題起源】 我最近要做一個Class加密程序
用自己的classload來裝載encryptclass
好
我必須提供一個工具來給程序員
用於加密class
作為一個好的Exe程序
我希望可以通過命令行加密class
譬如
Encryption
encrypt class
class class
class
問題來了
我是否應該做成文件通配符的方式?
譬如
Encryption
encrypt c?*k?
class
【解決辦法】 好在有google
我搜索
FilenameFilter wildcard character
發現有一個appach組織在做一個oro的項目
裡面有
我要的東西
org
appache
oro
io
GlobFilenameFilter這個可以用
然而在測試的時候發現java的讀取arg的方式很讓我吃驚
import java
io
File;
import org
apache
oro
io
GlobFilenameFilter;
public class Test {
public static void main( String[] args ) {
// Create a filter
GlobFilenameFilter filter = new GlobFilenameFilter( args[
]);
// Find all the files in the folder matching that filter
File cwd = new File(
);
String[] filesFound = cwd
list( filter );
// And print them out
System
out
println(
Found
+ filesFound
length +
files
);
for( int i =
; i < filesFound
length; i ++ ) {
System
out
println(
Found file
+ filesFound[i] );
}
}
}
大家可以將這個文件放在自己的IDE裡面運行
並在工作目錄裡面建
個txt文件
txt
txt
txt
運行
java Test *
txt(jdk
)
結果如何?
這個程序打印結果是
found
file
found file
txt
【為什麼】 為了了解原因
我在main函數加入一句
System
out
println(
arg[
]=
+arg[
]);
結果是
arg[
]=
txt
這就說明了
java在調用參數的時候已經進行通配符的處理
在這個例子中
java Test *
txt
和
java Test
txt
txt
txt是等同的
不信
你可以讓他做循環打印
for(int j=
; j
System
out
println(
arg[
+j+
]=
+arg[j]);
}
結果一樣讓你吃驚
【結論】 實事求是和試驗是檢驗真理的辦法
不要想當然
From:http://tw.wingwit.com/Article/program/Java/Javascript/201311/25450.html