Java 将字符串与文件名匹配
我正在编写一个程序,它可以执行各种数据分析功能,以便与Excel一起使用 我需要一种返回文档文件名的方法,这样我就可以搜索它们并找到我想要的 我需要能够获取一个字符串,保存为变量,并使用它返回文件夹中每个文档的名称,该文件夹的文件名包含该字符串 这将用于筛选预先分类的数据部分。理想情况下,我会将这些文档的文件名保存在字符串数组中,以供以后在其他函数中使用。Java 将字符串与文件名匹配,java,string,search,document,title,Java,String,Search,Document,Title,我正在编写一个程序,它可以执行各种数据分析功能,以便与Excel一起使用 我需要一种返回文档文件名的方法,这样我就可以搜索它们并找到我想要的 我需要能够获取一个字符串,保存为变量,并使用它返回文件夹中每个文档的名称,该文件夹的文件名包含该字符串 这将用于筛选预先分类的数据部分。理想情况下,我会将这些文档的文件名保存在字符串数组中,以供以后在其他函数中使用。private List searchforfilenamescontainingsubstring(字符串子字符串) private Lis
private List searchforfilenamescontainingsubstring(字符串子字符串)
private List<String> searchForFileNameContainingSubstring( String substring )
{
//This is assuming you pass in the substring from input.
File file = new File("C:/Users/example/Desktop"); //Change this to the directory you want to search in.
List<String> filesContainingSubstring = new ArrayList<String>();
if( file.exists() && file.isDirectory() )
{
String[] files = file.list(); //get the files in String format.
for( String fileName : files )
{
if( fileName.contains( substring ) )
filesContainingSubstring.add( fileName );
}
}
for( String fileName : filesContainingSubstring )
{
System.out.println( fileName ); //or do other operation
}
return filesContainingSubstring; //return the list of filenames containing substring.
}
{
//这是假设您从输入传入子字符串。
File File=new File(“C:/Users/example/Desktop”);//将其更改为要搜索的目录。
列表文件containingsubstring=new ArrayList();
if(file.exists()&&file.isDirectory())
{
String[]files=file.list();//以字符串格式获取文件。
用于(字符串文件名:文件)
{
if(fileName.contains(子字符串))
filecontainingsubstring.add(文件名);
}
}
for(字符串文件名:filecontainingsubstring)
{
System.out.println(文件名);//或执行其他操作
}
return filecontainingsubstring;//返回包含子字符串的文件名列表。
}
使用此方法,可以将来自用户的输入作为希望文件名包含的字符串传入。您需要更改的另一件事是,您希望在目录中的什么位置开始搜索文件,而此程序只在该目录中查找
您可以从起点进一步递归地查看其他目录,但我不会在这里添加该功能。不过你绝对应该调查一下
这还假设您正在查找目录中的所有内容,包括其他文件夹,而不仅仅是文件。您可以获取目录中所有文件的列表,然后将它们存储在数组中。接下来,使用
java.io.File.getName()
方法,您可以获得文件名。现在,您只需使用.indexOf()
方法检查字符串是否是文件名的子字符串。我假设关注目录中的所有项目都是文件,而不是子目录
public static void main(String[] args) throws IOException {
File[] files = new File("X:/").listFiles(); //X is the directory
String s <--- the string you want to check filenames with
for(File f : files){
if(f.getName().toLowerCase().indexOf(s.toLowerCase()) != -1)
System.out.println(f.getName());
}
}
publicstaticvoidmain(字符串[]args)引发IOException{
File[]files=新文件(“X:/”)。listFiles();//X是目录
字符串s这里是递归搜索文件的答案
String name; //to hold the search file name
public String listFolder(File dir) {
int flag;
File[] subDirs = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isDirectory();
}
});
System.out.println("File of Directory: " + dir.getAbsolutePath());
flag = Listfile(dir);
if (flag == 0) {
System.out.println("File Found in THe Directory: " + dir.getAbsolutePath());
Speak("File Found in THe Directory: !!" + dir.getAbsolutePath());
return dir.getAbsolutePath();
}
for (File folder : subDirs) {
listFolder(folder);
}
return null;
}
private int Listfile(File dir) {
boolean ch = false;
File[] files = dir.listFiles();
for (File file : files) {
Listfile(file);
if (file.getName().indexOf(name.toLowerCase()) != -1) {//check all in lower case
System.out.println(name + "Found Sucessfully!!");
ch = true;
}
}
if (ch) {
return 1;
} else {
return 0;
}
}
你所说的标题
是什么意思?你是指文件名吗?你为什么要存储文件名?我该如何开始编写此程序的搜索部分?-研究。用户是否指定要搜索的目录?堆栈溢出实际上并不意味着让其他人做这项工作并指导你/给你一个解决方案目的是您首先自己尝试一些东西,然后如果您的实现有问题,请将其带到这里。请展示一些初步的努力。谢谢。您的问题只包含要求-它不显示您方面为自己解决此问题所做的任何努力。请将您的尝试添加到此问题中-如下所示本网站不是免费的“我们为您(家庭)工作”服务。除此之外:请转到以了解如何/问什么。谢谢!耶稣基督。您答对了,先生。@KaelEppcohen所以这似乎是一个可以接受的答案?提示提示wink wink这是一个简单的问题,因为名称指的是您要搜索的文件名!还有一件事需要指出的是,您应该将目录名命名为“C://”但是,将文件搜索到整个目录是很慢的。所以,你也应该把文件夹名命名为“C://FordDyNoX”,现在它很快。你需要其他的解释吗?请在IDENE中指出注释中的这些东西。