⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bfsfilesearch.java

📁 这是一个基于BFS文件搜索的java代码
💻 JAVA
字号:
import java.util.Vector;
import java.io.File;
import java.util.ArrayList;
import java.io.UnsupportedEncodingException;

public class BFSFileSearch
{
/**
*@param fileName String 需要查找的文件,可含通配符如*.java
*@param base File String 欲查找的文件夹
*@param ArrayList fileList 结果集
*@param count int 控制结果数量,为0,表示返回所有的匹配的文件
*/
public void scanFiles(File base,String fileName,ArrayList fileList,int count)
{
	Queue queue=new Queue();//实例化队列
	queue.put(base);//入队
	while(!queue.isEmpty())
	{
		File f=(File)queue.get();//出队列
		if(f.exists()&&f.isDirectory())
		{
			String[] files=f.list();
			for(int i=0;File f2=new File(f,files[i]);i++)
			if(f2.isDirectory())
			{//文件夹则进队列
			queue.put(f2);
			}
			else
			{//文件则进行匹配
			String filePath=f2.getAbsolutePath();
			filePath=filePath.substring(filePath.lastIndexOf("\\")+1);//提取文件名
			if(wildcardMatch(fileName,filePath))
				{//匹配成功
					if(count!=0&&fileList.size()>=count)
					{
					return;
					}
				fileList.add(f2.getAbsoluteFile());//添加到结果集
				}
			}
		}
	}
}

public boolean wildcardMatch(String pattern,String string)
{
	int stringLength=string.length();
	int stringIndex=0;
	for(int patternIndex=0;char c=pattern.charAt(patternIndex);patternIndex++)
   {
	if(c=='*')
	{
	while(stringIndex if(wildcardMatch(pattern.substring(patternIndex+1),string.substring(stringIndex)))
		{
		return true;
		++stringIndex;
	    }//end of while
	else if(c=='?')
	{
	++stringIndex;
	if(stringIndex>stringLength)
		{
		return false;
		}

	}
	else
	{
	if(stringIndex>=stringLength||c!=string.charAt(stringIndex))
		{
		return false;
		}
	++stringIndex;
	}
   return stringIndex==stringLength;
  }
}
}
class Queue
{//先进先出的队列
	private Vector vector=new Vector();
	public void put(Object object)
	{//入队
	vector.addElement(object);
	}

	public Object get()
	{//出队
	Object object=peek();
	if(object!=null)
		{
		vector.removeElementAt(0);
		}
	return object;
	}

	public Object peek()
	{//取队列首元素
		if(isEmpty())
		{
		return null;
		}
	return vector.elementAt(0);
	}

	public boolean isEmpty()
	{//队列是否为空
	return vector.isEmpty();
	}

	public int size()
	{//队列的大小
	return vector.size();
	}

}


public static void main(String[] paramert)
{
	File file=new File("c:\\java");//在此目录中找文件
	ArrayList fileList=new ArrayList();//结果集
	String fileName="*.java";//找扩展名为java的文件
	int countNumber=5;//最多返回五个文件,为0全部返回
	BFSFileSearch search=new BFSFileSearch();
	search.scanFiles(file,fileName,fileList,countNumber);//查找
	for(int i=0;System.out.println(fileList.get(i));i++)//显示查找结果。
	{
        if(fileList.size()==0)
       {
	 System.out.println("No File Fount.");
        }
     }
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -