说说Java的args,大家可能没有注意到的现象

原创 2004年07月16日 12:53:00
 【问题起源】

         我最近要做一个Class加密程序, 用自己的classload来装载encryptclass, 好, 我必须提供一个工具来给程序员,

用于加密class,作为一个好的Exe程序, 我希望可以通过命令行加密class

譬如:Encryption -encrypt  class1.class class2.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[0]);

                // 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 = 0; i < filesFound.length; i ++ ) {
                        System.out.println(" Found file " + filesFound[i] );
                }
        }
}
大家可以将这个文件放在自己的IDE里面运行, 并在工作目录里面建3个txt文件:1.txt 2.txt 3.txt

运行:java Test *.txt(jdk 1.4.0)

结果如何?

这个程序打印结果是:

found 1 file

found file 1.txt

【为什么】

        为了了解原因, 我在main函数加入一句:

System.out.println("arg[0]="+arg[0]);

结果是:

      arg[0]=1.txt

这就说明了, java在调用参数的时候已经进行通配符的处理在这个例子中:

java Test *.txt

java Test 1.txt 2.txt 3.txt是等同的

不信, 你可以让他做循环打印:

for(int j=0; j

   System.out.println("arg["+j+"]="+arg[j]);

}

结果一样让你吃惊

【结论】

        实事求是和试验是检验真理的办法, 不要想当然。

【相关链接】

一个老外和我一样困惑:这里查看

ORO项目

说说Java的args,大家可能没有注意到的现象

  • zgqtxwd
  • zgqtxwd
  • 2008年04月25日 05:24
  • 114

情人节的生日

    没有情人就无所谓有没有情人节,生日也懒得过的,每年都是如此,真希望以后有个MM给我庆祝生日.呵呵,也许梦里吧.    晚上约了一帮基本上是single的同学打球, 什么叫物以类聚~...
  • moonglow
  • moonglow
  • 2005年02月14日 17:28
  • 448

源代码——程序员心中的诗

在文人心目中,诗歌具有精简、优美等优点。在程序员的世界里,源代码就是诗歌。 源代码,是程序员在一定时期努力的结晶、成果。通过源代码,程序员创造了计算机世界,为人类带来了无数利益。你现在看着的、用着的,...
  • fiolee
  • fiolee
  • 2004年07月28日 01:12
  • 815

java中的object... args参数

今天在看数据库连接时看到一个方法execSQL(String sql,object... args),该方法中使用了object... args参数,该语法是JDK1.5新增语法,新特性,动态参数或者...
  • dajiadexiaocao
  • dajiadexiaocao
  • 2016年04月25日 10:06
  • 1585

java里面 关于参数args

                今天看代码的时候,突然看到args,一时忘了怎么使用,在google敲进java args,马上有一大堆记录出来,看来想知道它用法的不止我一人。在这里记下来,希望以后忘...
  • xian_fish
  • xian_fish
  • 2007年08月03日 11:23
  • 5034

JAVA中main函数参数args,以及如何给args传参

JAVA main方法学习
  • jamesChentt
  • jamesChentt
  • 2017年04月09日 00:35
  • 3026

你不知道的Java笔记9--解读main()方法中的String[] args

一、main函数 public class Test { public static void main(String[] args) { } } String[] arg...
  • lin434406218
  • lin434406218
  • 2016年09月21日 19:18
  • 1708

java中main函数中的 参数(String [] args)

最近看到了java里main函数的参数(string[] args)的使用,不明白其中的道理,网上搜了一下,找到一篇讲的比较好的文章,给大家分享一下,原文链接如下: http://blog.sina...
  • Linda_Lindaaaa
  • Linda_Lindaaaa
  • 2015年05月03日 21:37
  • 1335

hash 的介绍

做题的时候遇到了hash,学数据结构的时候已经了解的大概= 一遇到还是不太清楚:所以还是在网上查找了资料,hash就可以压缩数据,通过构造哈希函数,来实现查找搜索等功能; 转来: ...
  • u013652219
  • u013652219
  • 2014年02月26日 18:03
  • 1068

区分String[] args和String args[]

在Java语言中,有这么两个书写方式,看上去差异很小,实质上意义完全不同。 public static void main(String[] args) public static void mai...
  • KingOfOnePiece
  • KingOfOnePiece
  • 2016年01月08日 14:35
  • 860
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:说说Java的args,大家可能没有注意到的现象
举报原因:
原因补充:

(最多只允许输入30个字)