thingking in java 的
PPrint类package net.mindview.util;
import java.util.*;public class PPrint {
  public static String pformat(Collection<?> c) {
    if(c.size() == 0) return "[]";
    StringBuilder result = new StringBuilder("[");
    for(Object elem : c) {
      if(c.size() != 1)
        result.append("\n  ");
      result.append(elem);
    }
    if(c.size() != 1)
      result.append("\n");
    result.append("]");
    return result.toString();
  }
  public static void pprint(Collection<?> c) {
    System.out.println(pformat(c));
  }
  public static void pprint(Object[] c) {
    System.out.println(pformat(Arrays.asList(c)));
  }
} ///:~
和Directory类package net.mindview.util;
import java.util.regex.*;
import java.io.*;
import java.util.*;public final class Directory {
  public static File[]
  local(File dir, final String regex) {
    return dir.listFiles(new FilenameFilter() {
      private Pattern pattern = Pattern.compile(regex);
      public boolean accept(File dir, String name) {
        return pattern.matcher(
          new File(name).getName()).matches();
      }
    });
  }
  public static File[]
  local(String path, final String regex) { // Overloaded
    return local(new File(path), regex);
  }
  // A two-tuple for returning a pair of objects:
  public static class TreeInfo implements Iterable<File> {
    public List<File> files = new ArrayList<File>();
    public List<File> dirs = new ArrayList<File>();
    // The default iterable element is the file list:
    public Iterator<File> iterator() {
      return files.iterator();
    }
    void addAll(TreeInfo other) {
      files.addAll(other.files);
      dirs.addAll(other.dirs);
    }
    public String toString() {
      return "dirs: " + PPrint.pformat(dirs) +
        "\n\nfiles: " + PPrint.pformat(files);
    }
  }
  public static TreeInfo
  walk(String start, String regex) { // Begin recursion
    return recurseDirs(new File(start), regex);
  }
  public static TreeInfo
  walk(File start, String regex) { // Overloaded
    return recurseDirs(start, regex);
  }
  public static TreeInfo walk(File start) { // Everything
    return recurseDirs(start, ".*");
  }
  public static TreeInfo walk(String start) {
    return recurseDirs(new File(start), ".*");
  }
  static TreeInfo recurseDirs(File startDir, String regex){
    TreeInfo result = new TreeInfo();
    for(File item : startDir.listFiles()) {
      if(item.isDirectory()) {
        result.dirs.add(item);
        result.addAll(recurseDirs(item, regex));
      } else // Regular file
        if(item.getName().matches(regex))
          result.files.add(item);
    }
    return result;
  }
  // Simple validation test:
  public static void main(String[] args) {
    if(args.length == 0)
      System.out.println(walk("."));
    else
      for(String arg : args)
       System.out.println(walk(arg));
  }
} ///:~
同一个包内的类,不是放同一个文件夹就能用了吗?
怎么会有错误,怎么改正?

解决方案 »

  1.   

    编译时退到工程的主路径上 javac  你的路径net\mindview\util   Directory .java 试试看吧!
      

  2.   

    我的
    classpath.;%JAVA_HOME%\lib\dt.jar; %JAVA_HOME%\lib\tools.jarJAVA_HOME
    D:\Java\jdk1.6.0_22
      

  3.   

    编译后生成的class文件的路径的问题
      

  4.   

    编译后生成的class文件
    也在D:\Java\jdk1.6.0_22\net\mindview\util目录下啊。
      

  5.   

    net\mindview\util 的父目录也要在classpath里
      

  6.   

    带有包名的类不能这样编译的,退到 net 目录的上一层,然后这样:D:\Java\jdk1.6.0_22>javac -d . net/mindview/util/Directory.javaD:\Java\jdk1.6.0_22>java net.mindview.util.Directory由于 Directory 是主程序,直接编译这个 java 文件就可以了,其中涉及到其他的 java 文件会顺带一起编译的。
      

  7.   

    PS-1:你怎么把你的程序放到 JDK 的安装目录中去了啊,这可不是好习惯哦,呵呵。
    PS-2:楼主 Java 代码最后有个这个 ///:~ 不知道是啥意思哦,挺可爱的,哈哈。
      

  8.   

    首先环境有没有配好:JAVA_HOME,path?
    先把环境配好,网上有很多这样的教程。
    再打开CMD,把当前目录转到neth目录的上一个目录,然后再执行JAVAC就可以了
      

  9.   

    D:\Java\jdk1.6.0_22>javac net/mindview/util/Directory.javaD:\Java\jdk1.6.0_22>java net.mindview.util.Directory谢谢火龙大哥
    ~~ 这个是thinking in Java的代码,看见有人介绍这本书,我就买来看了。