Java:自动检测输入文件路径

Java:自动检测输入文件路径,java,file,input,path,Java,File,Input,Path,我需要创建一个从文件中获取输入的程序。我需要使用什么来自动查找当前路径,然后搜索输入文件 示例:我将主文件放在C:/*路径名*/中,输入文件名为input.txt。如何使我的程序自动找到C:/*pathname*/INPUT.txt路径以获取其输入?在这种情况下,可以使用递归来查找文件。通过检查当前文件是否与给定文件名匹配,可以在当前/给定目录中启动搜索过程。如果您找到一个目录,您将在此目录中继续递归搜索过程 private static final File findFile(final St

我需要创建一个从文件中获取输入的程序。我需要使用什么来自动查找当前路径,然后搜索输入文件


示例:我将主文件放在
C:/*路径名*/
中,输入文件名为
input.txt
。如何使我的程序自动找到
C:/*pathname*/INPUT.txt
路径以获取其输入?

在这种情况下,可以使用递归来查找文件。通过检查当前文件是否与给定文件名匹配,可以在当前/给定目录中启动搜索过程。如果您找到一个目录,您将在此目录中继续递归搜索过程

private static final File findFile(final String rootFilePath, final String fileToBeFound) {

    File rootFile = new File(rootFilePath);
    File[] subFiles = rootFile.listFiles();
    for (File file : subFiles != null ? subFiles : new File[] {}) {
        if (file.getAbsolutePath().endsWith(fileToBeFound)) {
            return file;
        } else if (file.isDirectory()) {
            File f = findFile(file.getAbsolutePath(), fileToBeFound);
            if (f != null) {
                return f;
            }
        }
    }

    return null; // null returned in case your file is not found

}

public static void main(final String[] args){

     File fileToBeFound = findFile("C:\\", "INPUT.txt"); // search for the file in all the C drive
     System.out.println(fileToBeFound != null ? fileToBeFound.getAbsolutePath() : "Not found");

     //you can also use your current workspace directory, if you're sure the file is there
    fileToBeFound = findFile(new File(".").getAbsolutePath() , "INPUT.txt");
    System.out.println(fileToBeFound != null ? fileToBeFound.getAbsolutePath() : "Not found");
}

NIO.2可以让这变得非常简单:您必须在“C:”驱动器中递归搜索INPUT.txt,也称为遍历文件树。更多信息:您的输入文件是否始终与您的程序位于同一文件夹中?然后可以使用相对路径
新文件(./INPUT.txt)