Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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 Arraylist和文件_Java_String_Arraylist - Fatal编程技术网

Java Arraylist和文件

Java Arraylist和文件,java,string,arraylist,Java,String,Arraylist,我需要做的是从用户处获取一个搜索文件的路径,并从用户处获取一组字符,这是要搜索的文件名的一部分。一旦找到该文件,它将显示所有位置,包括子文件夹以及完整的文件名。我所做的是获取给定路径中的所有文件,并使用ListFiles()将它们放入file[]数组。获取所有文件的名称并将它们保存到arraylist中。创建另一个arraylist并仅保存文件名,而不保存前一个arraylist的扩展名。然后使用用户输入的字符集与此arraylist中的每个文件名进行比较。为了测试这是否有效,我打印了它,但它打

我需要做的是从用户处获取一个搜索文件的路径,并从用户处获取一组字符,这是要搜索的文件名的一部分。一旦找到该文件,它将显示所有位置,包括子文件夹以及完整的文件名。我所做的是获取给定路径中的所有文件,并使用ListFiles()将它们放入file[]数组。获取所有文件的名称并将它们保存到arraylist中。创建另一个arraylist并仅保存文件名,而不保存前一个arraylist的扩展名。然后使用用户输入的字符集与此arraylist中的每个文件名进行比较。为了测试这是否有效,我打印了它,但它打印了所有文件名,而不仅仅是与用户输入的字符集匹配的文件名。以下是我的代码:

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();
     }
  }
 }
import java.util.*;
导入java.io.*;
公共类文件搜索
{
公共静态void main(字符串参数[])
{
尝试
{
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
System.out.println(“1.输入搜索路径:”);
字符串str=br.readLine();
System.out.println(“2.输入文件名的一些字符:”);
字符串str1=br.readLine();
文件文件=新文件(str);
File[]f=files.listFiles();
List li=new ArrayList();
List li1=新的ArrayList();

对于(int i=0;i,您的代码非常好。以下语句是问题的根本原因

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

如果您已清楚地观察到,则在If条件之后使用了
。删除分号,代码将正常工作。

您的代码绝对正常。以下语句是问题的根本原因

if(li1.get(i).contains(str1));
{
    System.out.println(li1.get(i));
}
如果您已经清楚地观察到,您在If条件之后使用了
。删除分号,代码就可以正常工作。

这里看一下。它将帮助您了解如何调试程序。 看起来您可以这样构造完整路径:

String fullPath = files.getAbsolutePath() + li1.get(i);
看看这个,它将帮助你理解如何调试你的程序。 看起来您可以这样构造完整路径:

String fullPath = files.getAbsolutePath() + li1.get(i);

没错。你正在打印你的li1 arraylist的内容,它包含没有扩展名的名称。你想让它做什么?你的代码对我来说似乎是对的。你确定str1的值吗?试着用一个调试器来调试它。如果你需要帮助,就调试它吧:非常感谢你…我从来没有真正使用过调试器…图(他说:)顺便说一句,你的代码有点凌乱-你可以在一个for-each循环中完成这个逻辑,而不需要创建任何列表。而且
str
str1
都不是很好的变量名,
searchDirectory
filePattern
将更能说明这些变量代表什么正在清除li1 arraylist的内容,它包含没有扩展名的名称。你想让它做什么?你的代码对我来说似乎是正确的..你确定str1的值吗?试着用一个调试程序来调试它…如果你需要帮助,请调试它:非常感谢…我从来没有真正使用过调试程序…解决了:)作为aside,您的代码有点混乱-您可以在单个for-each循环中执行此逻辑,无需创建任何列表。此外,
str
str1
都不是很好的变量名,
searchDirectory
filePattern
将更能指示这些变量所代表的内容。不要难过。这个错误如果你使用Eclipse,你可以将这样的语句作为编译器警告。请参阅别难过。这个错误曾经让每个人都收到过警告。如果你使用Eclipse,你可以将这样的语句作为编译器警告。请参阅@JoelThanks很多:)但现在这些文件名存储在arraylist中。我需要打印出它们的完整文件路径。既然它们现在是字符串,我该怎么做。您是否将扩展名存储在任何位置?如果是,您可以执行字符串连接,将它们组合成一个字符串,以便打印出fullPath=files.getAbsolutePath()+li1.get(I);@JoelThanks很多:)但是现在这些文件名存储在一个arraylist中。我需要打印出它们的完整文件路径。既然它们现在是字符串,我该怎么做呢。扩展名是否存储在任何地方?如果是的话,你可以通过字符串连接将它们组合成一个字符串,然后打印出fullPath=files。getAbsolutePath()+li1.get(i) );