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

原创 2004年07月15日 13:06: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项目

以前没有注意到的地方

1 关于对象向上转型   举例 有两个类 A 和 B (其中 B是A的子类) A 有成员属性 a ,b 成员方法 func1 ,  func2 ;B有成员属性 a, c 成员方法 func1,func...
  • baixbaib
  • baixbaib
  • 2015年10月14日 16:19
  • 202

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

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

HTML 以前没有注意到内容

HTML 文本格式化实例 文本格式化此例演示如何在一个 HTML 文件中对文本进行格式化预格式文本此例演示如何使用 pre 标签对空行和空格进行控制。“计算机输出”标签此例演示不同的“计算机输出...
  • zhoujn90
  • zhoujn90
  • 2013年03月11日 21:49
  • 290

159 samba 无法访问。您可能没有权限使用网络资源 net use命令

http://www.cnblogs.com/bluebbc/archive/2012/05/21/2512040.html   ubuntu安装samba   1 自动安...
  • simtwo
  • simtwo
  • 2013年02月22日 22:37
  • 9070

Windows XP 共享 Workgroup无法访问.您可能没有权限使用网络资源

1.检查guest账户是否开启。在桌面上,对准我的电脑按右键--管理--本地用户和组--用户,然后在右边的方框里在对准guest按右键--属性--把帐户已停用的钩取消即可.  XP默认情况下...
  • QQ282030166
  • QQ282030166
  • 2014年06月10日 14:14
  • 37134

且谈谈我对Java反射的理解

Java培训、Android培训、iOS培训、.Net培训、期待与您交流!  在张老师的课程当中,谈到了反射的概念,用冯伟立学长的最简单的一句话来说就是:反射就是把Java类中的各种成分映射成相应的J...
  • piaoyi493279486
  • piaoyi493279486
  • 2015年05月10日 20:00
  • 1962

Java——main方法的String[] args参数

敲例子的时候无意中把主方法的参数给落下了,当时没有发现,保存之后就去编译,运行了,通常情况下编译没有错误那胜利就在掌握之中了,没想到这次我竟然在"不一般"的行列中,编译无误,运行出错,错误信息如下: ...
  • cjr15233661143
  • cjr15233661143
  • 2014年04月03日 10:17
  • 17077

解决“**无法访问,你可能没有权限使用网络资源,请与管理员联系,拒绝访问!"

电脑出现“XXX无法访问。你可能没有权限使用网络资源......”,ping得通,即使重新系统也不能解决 。   方法一:出现这一类的问题有可能的防毒软件可能出于安全考虑做了什么设置,让电...
  • CS41806516
  • CS41806516
  • 2014年12月29日 11:43
  • 25513

24c32,i2c原理

通讯主要就是scl,sda线,和电源-地。4线 地址由24c32器件的A0,A1,A2来决定。SCL,SDA需要接上拉。 本次说的都是主机端流程。 1.启动和stop SCL=1,SDA下降沿表...
  • hxchuan000
  • hxchuan000
  • 2017年01月19日 11:07
  • 607

说说java中的那些代码块

java之代码块 什么叫代码块?代码块是指使用大括号把多行代码封装在一起,形成一个独立的数据体,实现特定算法的代码集合纪委代码块。简而言之就是使用“{}”括起来的一段代码。一般来说代码块是不能单独运...
  • weixin_40096176
  • weixin_40096176
  • 2018年01月11日 14:48
  • 22
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:说说Java的args,大家可能没有注意到的现象
举报原因:
原因补充:

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