access文件

rbl8hiat  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(379)

我试图在代码中使用一个文件,但我不想指定绝对文件路径,只指定文件名,例如“filename.txt”。
我想这样做,使我有能力在不同的笔记本电脑上使用此代码的文件可能存储在不同的文件夹。
下面的代码是我目前正在使用的,但我收到一个 NoSuchFileException 当我运行它的时候。

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

有没有办法克服这个问题,这样我就可以找到文件而不知道它的绝对路径?

41ik7eoe

41ik7eoe1#

如果您没有向用户请求完整的路径,并且您没有必须在其中的特定文件夹,那么您唯一的选择就是搜索它。
从最根路径开始。学习使用文件类。然后搜查所有的孩子。此实现仅返回找到的第一个同名文件。

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

但是,最好的选择是让用户输入整个路径。对于大多数环境,都有很好的文件系统浏览工具可以为用户实现这一点。

z9ju0rcb

z9ju0rcb2#

关于如何在不知道其绝对路径的情况下查找文件的想法:
指示应用程序用户将文件放置在工作目录中。
指示应用程序用户将文件路径作为程序参数,然后将程序更改为使用该参数。
让程序读取使用选项1或2找到的配置文件,然后指示应用程序用户在配置文件中给出文件的路径。
提示用户输入文件名。
(不推荐)扫描整个文件系统以查找该文件,确保只有一个具有给定名称的文件。可选:如果找到多个文件,则提示用户使用哪个文件。

相关问题