私がする必要があるのは、ユーザーからファイルを検索するためのパスを取得し、検索するファイル名の一部であるユーザーから文字のセットを取得することです。ファイルが見つかると、サブフォルダーを含むすべての場所が完全なファイル名とともに表示されます。私が行ったことは、指定されたパス内のすべてのファイルを取得し、ListFiles()を使用してFile[]配列に配置します。。すべてのファイルの名前を取得し、それらを配列リストに保存します。別の配列リストを作成し、前の配列リストの拡張子なしでファイル名のみを保存します。次に、ユーザーが入力した文字セットを使用して、この配列リストの各ファイル名と比較します。これが機能しているかどうかをテストするために、印刷しましたが、ユーザーが入力した文字セットに一致するファイル名だけでなく、すべてのファイル名を印刷しました。これが私のコードです:
import java.util.*;
import java.io.*;
public class FileSearch
{
public static void main(String args[])
{
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(" 1.Enter the path to search:");
String str = br.readLine();
System.out.println(" 2.Enter some characters of the filename:");
String str1 = br.readLine();
File files = new File(str);
File[] f = files.listFiles();
List<String> li = new ArrayList<String>();
List<String> li1 = new ArrayList<String>();
for(int i=0;i<f.length;i++)
{
if(f[i].isFile())
{
li.add(f[i].getName());
}
}
for(int i=0;i<li.size();i++)
{
int j = li.get(i).lastIndexOf('.');
li1.add((j>-1)?li.get(i).substring(0, j):li.get(i));
}
for(int i=0;i<li1.size();i++)
{
if(li1.get(i).contains(str1));
{
System.out.println(li1.get(i));
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}