访问文件不知道绝对路径,只知道文件名

时间:2021-01-02 18:26:42

标签: java file path

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

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

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

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

有什么办法可以解决这个问题,这样我就可以在不知道绝对路径的情况下找到文件吗?

2 个答案:

答案 0 :(得分:0)

关于如何在不知道绝对路径的情况下找到文件的想法:

  1. 指示应用程序的用户将文件放在工作目录中。

  2. 指示应用程序的用户提供文件路径作为程序参数,然后更改程序以使用该参数。

  3. 让程序读取使用选项 1 或 2 找到的配置文件,然后指示应用程序用户提供配置文件中文件的路径。

  4. 提示用户输入文件名。

  5. (不推荐) 扫描整个文件系统以查找该文件,确保只有一个具有给定名称的文件。 可选:如果找到多个文件,提示用户使用哪个文件。

答案 1 :(得分:0)

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

从最根的路径开始。学习使用 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 );

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