0

我需要做的是从用户那里搜索文件的路径,并从用户那里获取一组字符,这是要搜索的文件名的一部分。找到文件后,它将显示所有位置,包括子文件夹以及完整的文件名。我所做的是获取给定路径中的所有文件,并使用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();
     }
  }
 }
4

2 回答 2

2

你的代码绝对没问题。以下陈述是问题的根本原因。

if(li1.get(i).contains(str1));
{
    System.out.println(li1.get(i));
}

如果你观察清楚你已经使用;了if条件之后。删除分号,代码可以正常工作。

于 2013-01-14T16:56:52.570 回答
2

下面看看这篇文章。它将帮助您了解如何调试您的程序。看起来您可以像这样构建完整路径:

String fullPath = files.getAbsolutePath() + li1.get(i);
于 2013-01-14T16:58:06.650 回答