File f = new File(filename);
if(f.isFile()){
System.out.println(f.getPath());
}else if(f.isDirectory()){
String dir = f.list();
接着在循环判断dir
}这样做比较处理目录比较麻烦 对目录的操作可以专门写个方法
if(f.isFile()){
System.out.println(f.getPath());
}else if(f.isDirectory()){
String dir = f.list();
接着在循环判断dir
}这样做比较处理目录比较麻烦 对目录的操作可以专门写个方法
说明:1)File主要用于查找匹配的文件类型和对是否是文件的判断;
2)循环结构主要用于搜索该类型的所有文件;
3)JSplitPane主要用于搜索结果的显示
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();
}
}
放在同一目录下编译。
调用方法是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() {
}
}
用listRoots()得到根目录
然后对每一个根目录用listFiles()
假定你定义了一个搜索文件夹的方法叫做findInDIR(String path)
来得到所有的文件以及文件夹名字
处理每一个得到的File,如果这个File isFile()的话
那么就直接判断他的名字
如果这个File isDirectory()的话,那么递归的
用findInDIR()搜索这个DIR