Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串与文件名匹配_Java_String_Search_Document_Title - Fatal编程技术网

Java 将字符串与文件名匹配

Java 将字符串与文件名匹配,java,string,search,document,title,Java,String,Search,Document,Title,我正在编写一个程序,它可以执行各种数据分析功能,以便与Excel一起使用 我需要一种返回文档文件名的方法,这样我就可以搜索它们并找到我想要的 我需要能够获取一个字符串,保存为变量,并使用它返回文件夹中每个文档的名称,该文件夹的文件名包含该字符串 这将用于筛选预先分类的数据部分。理想情况下,我会将这些文档的文件名保存在字符串数组中,以供以后在其他函数中使用。private List searchforfilenamescontainingsubstring(字符串子字符串) private Lis

我正在编写一个程序,它可以执行各种数据分析功能,以便与Excel一起使用

我需要一种返回文档文件名的方法,这样我就可以搜索它们并找到我想要的

我需要能够获取一个字符串,保存为变量,并使用它返回文件夹中每个文档的名称,该文件夹的文件名包含该字符串

这将用于筛选预先分类的数据部分。理想情况下,我会将这些文档的文件名保存在字符串数组中,以供以后在其他函数中使用。

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中指出注释中的这些东西。