Java 如何拆分arraylist<;文件>;加上/&引用;

Java 如何拆分arraylist<;文件>;加上/&引用;,java,arraylist,Java,Arraylist,我正在做一个贝壳。在控制台上,当用户输入cd“path”时,当前目录将在给定路径中更改。当用户输入查找“filename”时,我的程序将在该目录中搜索该文件并返回该目录的路径 我写了一个方法,打印所有文件,包括该目录下的子目录。。。但我不知道如何找到用户输入的特定文件并打印文件路径 我想我必须按/分割路径,然后将它们存储到数组列表中,然后使用用户输入“filename”将它们相等。我不知道如何将路径拆分为ArrayList 我的方法的当前状态: public static void findFi

我正在做一个贝壳。在控制台上,当用户输入
cd“path”
时,当前目录将在给定路径中更改。当用户输入
查找“filename”
时,我的程序将在该目录中搜索该文件并返回该目录的路径

我写了一个方法,打印所有文件,包括该目录下的子目录。。。但我不知道如何找到用户输入的特定文件并打印文件路径

我想我必须按
/
分割路径,然后将它们存储到
数组列表中,然后使用用户输入
“filename”
将它们相等。我不知道如何将路径拆分为
ArrayList

我的方法的当前状态:

public static void findFilesInDirectory()
    {
        ArrayList<File> anArray = new ArrayList<File>();
        String getDirectoryName = presentWorkingDirectory;

        findFilesProcess(getDirectoryName, anArray);


        for(File str: anArray)
        {

            System.out.println("Hamza Found File: " + str);

        }
    }
public static void findFilesProcess(String directoryName, ArrayList<File> files) 
{

        File directory = new File(directoryName);
        File[] fList = directory.listFiles();
        for (File file : fList)
        {
            if (file.isFile())
            {
                files.add(file);
            } 
            else if (file.isDirectory())
            {
                findFilesProcess(file.getAbsolutePath(), files);

            }

        }
公共静态void findFilesInDirectory()
{
ArrayList anArray=新的ArrayList();
字符串getDirectoryName=presentWorkingDirectory;
FindFileProcess(getDirectoryName,anArray);
for(文件str:anArray)
{
System.out.println(“Hamza找到文件:+str”);
}
}
公共静态void findFileProcess(字符串目录名、ArrayList文件)
{
文件目录=新文件(目录名);
File[]fList=directory.listFiles();
for(文件:fList)
{
if(file.isFile())
{
文件。添加(文件);
} 
else if(file.isDirectory())
{
FindFileProcess(file.getAbsolutePath(),files);
}
}

要在目录中查找文件:

public static File[] findFilesInDirectory(String presentWorkingDirectory) {
    // your directory
    File f = new File(presentWorkingDirectory);
    File[] matchingFiles = f.listFiles();
    return matchingFiles;
}

如果只有字符串目录结构而不是实际目录,则可以使用以下代码段从目录结构中仅获取文件名或仅获取文件名:

public static void main(String[] args)
    {
        List<String> dirPaths = new ArrayList<String>();
        dirPaths.add("/dir1/dir2/myfile1.txt");
        dirPaths.add("/dir1/myfile1.txt");
        dirPaths.add("/dir1/dir2/myfile2.txt");
        dirPaths.add("myfile.txt");
        for (String string : dirPaths)
        {
            String[] split = string.split("/");
            System.out.println(split[split.length - 1]);
        }
    }

希望它能帮助你。祝你有一个愉快的一天。:-

好的@muhammad让我们这样做吧

public static void main(String[] args)
    {
        // User input file name
        final String searchFileName = "";
        File f = null;
        File[] paths;
        try
        {
            // Your current working dir
            f = new File("c:/test");

            // create new filename filter
            FilenameFilter fileNameFilter = new FilenameFilter()
            {

                public boolean accept(File dir, String name)
                {
                    if (searchFileName.equalsIgnoreCase(name))
                    {
                        return true;
                    }
                    return false;
                }
            };
            // returns pathnames for files and directory filtered by user search file name, now you just have to show path as per your requirement.
            paths = f.listFiles(fileNameFilter);

            // for each pathname in pathname array
            for (File path : paths)
            {
                // prints file and directory paths
                System.out.println("paths:" + path + " :: file name" + path.getName());
            }
        }
        catch (Exception e)
        {
            // if any error occurs
            e.printStackTrace();
        }
    }

希望这段代码至少能对您有所帮助。祝您愉快。:-

请用示例进一步澄清问题。很难推断您想要实现的目标。我已经制作了一个shell。我希望用户输入“查找”空间“文件名”比我的代码在这个目录下搜索那个文件,如果文件存在,给用户提供路径发现文件路径像很多东西一样比它们看起来更复杂。例如,双斜杠被视为单斜杠。路径
foo///bar//baz/qux///foobar
等同于
foo/bar/baz/qux/foobar
。谢谢。但是我该怎么做呢可以解决这个问题。任何建议谢谢,但这没有帮助。非常感谢。“c:/Users/Hamza/Downloads”这是用户输入并查找“filename”的目录。现在我必须在所有子目录中搜索该文件名。你能帮我吗。。。
public static void main(String[] args)
    {
        // User input file name
        final String searchFileName = "";
        File f = null;
        File[] paths;
        try
        {
            // Your current working dir
            f = new File("c:/test");

            // create new filename filter
            FilenameFilter fileNameFilter = new FilenameFilter()
            {

                public boolean accept(File dir, String name)
                {
                    if (searchFileName.equalsIgnoreCase(name))
                    {
                        return true;
                    }
                    return false;
                }
            };
            // returns pathnames for files and directory filtered by user search file name, now you just have to show path as per your requirement.
            paths = f.listFiles(fileNameFilter);

            // for each pathname in pathname array
            for (File path : paths)
            {
                // prints file and directory paths
                System.out.println("paths:" + path + " :: file name" + path.getName());
            }
        }
        catch (Exception e)
        {
            // if any error occurs
            e.printStackTrace();
        }
    }