首页 > 解决方案 > 在不知道绝对路径的情况下访问文件,只知道文件名

问题描述

我试图在我的代码中使用一个文件,但我不想指定绝对文件路径,只指定文件名,例如“fileName.txt”。

我想这样做,因此我能够在文件可能存储在不同文件夹中的不同笔记本电脑上使用此代码。

下面的代码是我目前正在使用的,但是NoSuchFileException当我运行它时我收到了一个。

FileSystem fs FileSystems.getDefault();
Path fileIn = Paths.get("fileName.txt");

任何想法如何克服这个问题,以便我可以在不知道其绝对路径的情况下找到文件?

标签: javafilepath

解决方案


如果您不向用户询问完整路径,并且您没有必须在其中的特定文件夹,那么您唯一的选择就是搜索它。

从最根路径开始。学习使用 File 类。然后搜索所有的孩子。此实现仅返回找到的第一个具有该名称的文件。

public File findFile(File folder, String fileName) {
    File fullPath = new File(folder,fileName);
    if (fullPath.exists()) {
        return fullPath;
    }
    for (File child : folder.listFiles()) {
        if (child.isDirectory()) {
            File possible = findFile(child,fileName);
            if (possible!=null) {
                return possible;
            }
        }
    }
    return null;
}

然后通过调用文件系统的根目录或您要搜索的已配置的最根路径来启动它

File userFile = findFile(  new File("/"), fileName );

然而,最好的选择是让用户输入整个路径。大多数环境都有很好的文件系统浏览工具可以为用户执行此操作。


推荐阅读