File f = new File(filename);
if(f.isFile()){
  System.out.println(f.getPath());
}else if(f.isDirectory()){
  String dir = f.list();
  接着在循环判断dir 
}这样做比较处理目录比较麻烦 对目录的操作可以专门写个方法

解决方案 »

  1.   

    主要思路:通过文件类File+循环结构+JSplitPane
    说明:1)File主要用于查找匹配的文件类型和对是否是文件的判断;
         2)循环结构主要用于搜索该类型的所有文件;
         3)JSplitPane主要用于搜索结果的显示
      

  2.   

    没来得及测试,试试看把
    import javax.swing.*;
    import java.awt.*;
    import java.io.*;
    public class search extends JFrame
    {
    String k;
    public search()
    {
    k=JOptionPane.showInputDialog(this,"请输入文件名").trim();
    File f1=new File(".");
    File f[]=f1.listRoots();
    for(int i=0;i<f.length;i++)
    {
    file(f[i]);
    }
    setBounds(100,100,400,300);
    show();
    }
    public void file(File f)
    {
    if(f.isDirectory())
    {
    File ff[]=f.listFiles();
    for(int i=0;i<ff.length;i++)
    {
    String fl=ff[i].getName();
    System.out.println(ff[i]);
    if(fl==k)
    {
    System.out.println("文件的路径是:"+ff[i]);
    System.exit(0);
    }
    else if(ff[i].isDirectory())
    {
    file(ff[i]);
    }
    }
    } } public static void main(String [] args)
    {
    new search();
    }
    }
      

  3.   

    这是我写的一段程序,实现了类似dir /s的功能
    放在同一目录下编译。
    调用方法是java test1 (目录名) (要查找的文件名)//file DirFilter.java
    import java.io.*;
    public class DirFilter implements FilenameFilter {
        String afn;
        DirFilter(String afn) { this.afn = afn; }
        public boolean accept(File dir, String name) {
             File f1 = new File(dir.getPath() + dir.separator + name);
    if(f1.isDirectory()){
      test1 t1 = new test1();
      String[] args1 = new String[2];
      args1[0] = f1.getPath();
      args1[1] = afn;
      t1.disFile(args1);
      return false;
    }
    if(afn.equals("*")){
      return true;
    }else{
      String f = f1.getName();
      return f.indexOf(afn) != -1;
    }
         }
    }//file test1.java
    import java.io.*;public class test1 {
      public static void main(String[] args) {
        test1 ts1 = new test1();
        ts1.disFile(args); //显示目录结构(dir)
      }  public void disFile(String[] args){ //显示目录结构(dir)
        try {
    File path;
    if(args[0] != null){
      path = new File(args[0]);
    }else{
      path = new File(".");
    }
             String[] list;
             if(args.length <= 1)
                list = path.list(new DirFilter("*"));
             else
                list = path.list(new DirFilter(args[1]));
    System.out.println("目录:" + path.getPath());
    System.out.println("\n");
             for(int i = 0; i < list.length; i++){
               System.out.println(list[i]);
    }
    System.out.println(list.length + "个文件");
    System.out.println("\n");
          } catch(Exception e) {
          e.printStackTrace();
        }
      }  public test1() {
      }
    }
      

  4.   

    说说看思路吧
    用listRoots()得到根目录
    然后对每一个根目录用listFiles()
    假定你定义了一个搜索文件夹的方法叫做findInDIR(String path)
    来得到所有的文件以及文件夹名字
    处理每一个得到的File,如果这个File   isFile()的话
    那么就直接判断他的名字
    如果这个File  isDirectory()的话,那么递归的
    用findInDIR()搜索这个DIR