请问以下 static void main(String args[]) String args[]是什么,?
import java.io.*;public class DirList {
  public static void main(String[] args) {
    try {
      File path = new File(".");
      String[] list;
      if(args.length == 0)
        list = path.list();
      else 
        list = path.list(new DirFilter(args[0]));
      for(int i = 0; i < list.length; i++)
        System.out.println(list[i]);
    } catch(Exception e) {
      e.printStackTrace();
    }
  }
}class DirFilter implements FilenameFilter {
  String afn;
  DirFilter(String afn) { this.afn = afn; }
  public boolean accept(File dir, String name) {
    // Strip path information:
    String f = new File(name).getName();
    return f.indexOf(afn) != -1;
  }
} ///
{1} File path = new File(".");??
{2}list = path.list(new DirFilter(args[0]));?
{3}if(args.length == 0)
        list = path.list()
{4}FilenameFilter
{5}return f.indexOf(afn) != -1;
问题,帮忙解决一下

解决方案 »

  1.   

    String args[]表示命令行参数数组,是你运行这个Java程序传递的参数。
    如果你的程序如果是java DirList a b c,则args数组长度为3,三个元素分别为a、b、c
    1、File表示一个文件或者一个目录,这里表示当前目录,因为“.”就表示当前目录。
    2、public String[] list(FilenameFilter filter)
    返回由包含在目录中的文件和目录的名称所组成的字符串数组,这一目录是通过满足指定过滤器的抽象路径名来表示的。此方法的行为与 list() 方法相同,除了所返回数组中的字符串必须满足过滤器。如果给定 filter 为 null,则接受所有名称。否则,当且仅当在此抽象路径名和它所表示的目录中的文件名或目录名上调用过滤器的 FilenameFilter.accept(java.io.File, java.lang.String) 方法返回 true 时,该名称才满足过滤器。
    3、就是说如果args数组长度为0,也就是说没通过参数给出filter,则会列出所有当前目录下的所有目录和文件。
    4、public interface FilenameFilter
    实现此接口的类实例可用于过滤器文件名。
    此接口的唯一方法就是
    boolean accept(File dir, String name)
    测试指定文件是否应该包含在某一文件列表中。 
    参数:
    dir - 被找到的文件所在的目录。
    name - 文件的名称。 
    返回:
    当且仅当该名称应该包含在文件列表中时返回 true;否则返回 false。
    5、如果文件名包含afn所表示的字符串,则返回true,否则返回false(实际上这个accept方法实现跟本来的含义有点出入)
      

  2.   

    String[] args是main函数的形式参数,可以用来获取命令行用户输入进去的参数。如果你是java的初学者,编写一些简单的小程序是用不到它的,但是你在写程序的时候不管用的到用不到,声明main函数的时候一定要在括号里写上它,否则会报错。 
    我再给你举个用到String[] args的例子,可能语法上有错误,因为我手边没有java的书,而且我也只是个本科生,水平有限,权当给你理解用。 
    class Example 

    public void main(String[] args) 

    System.out.println(args[0]); 
    System.out.println(args[1]); 


    那么这个程序在执行的时候就需要向main函数传递形式参数的值,好让main函数完成打印的功能。 
    注:String[] args显示args是一个String类型的数组,args[0]、args[1]是头两个元素。 
    上面那个小程序执行的时候是这样: 
    首先,和其他的java程序一样,在命令提示符那个框框里输入 
    javac Example.java 
    再输入 
    java Example straul good 
    后面两个字符串随便写什么,它们作为实参传入main函数,straul传入args[0],good传入args[1]。 
    那么屏幕会出现: 
    straul 
    good 
    这和在main函数里调用其他函数并且向被调用函数传递参数是一样的道理,只不过传给main函数罢了。 
    这是我的理解,可能有问题,不过凭我学java的所得,我就是这么理解的。