繁体   English   中英

在不知道绝对路径的情况下访问文件,只知道文件名

[英]Access file without knowing absolute path, only knowing file name

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

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

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

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

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

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

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

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

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

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

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

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

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

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 );

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM