我只是想知道是否有任何方法可以让您的程序通过仅提供名称而无需像这样编写整个搜索路径来找到您想要使用的文件。
Scanner betalningsservice = new Scanner(new File("/afs/nada.kth.se/home/i/u1vxrjgi/betalningsservice.txt"));
String line1 = betalningsservice.nextLine();
您可以看到它的路径相当长,我希望程序能够检测到文件“betalningsservice.txt”,无论该文件位于计算机中的哪个位置(如果该文件已移动到其他地方)。大家有什么建议吗? :)
提前致谢
最佳答案
由于对于这个问题到底想要什么存在一些争论,我将发布另一个答案。
如果您使用的是 Java 8,则使用 Files.find
函数可以使查找文件变得更加简单。它的优点是能够限制搜索深度,控制搜索速度。这是一个将所有匹配文件的路径粘贴到列表中的示例。如果您找到多个匹配文件,您可以让用户选择正确的一个:
final String SEARCH_FILE = "betalningsservice.txt"; // the file you're looking for
final String SEARCH_ROOT = "/afs/nada.kth.se/home/i/"; // where to start the search (top folder)
final int SEARCH_DEPTH = 4; // how many nested subfolders to delve into
final List<Path> files = new LinkedList<>();
Files.find(Paths.get(SEARCH_ROOT), SEARCH_DEPTH, (p, a) -> p.endsWith(SEARCH_FILE))
.forEach(e -> files.add(e));
执行所有搜索逻辑的一个大语句是否更具可读性或可读性较差是有争议的,但这就是适合您的 Java 8。
如果您想获得高级体验,还可以将 FileVisitOption
附加到 find
函数的参数列表中(例如,跟踪符号链接(symbolic link))。
值得注意的是,在 Java 8 中,Path
通常取代了 File
作为表示文件和文件夹的方式,因此出现了路径列表。一旦您选择了正确的路径(我们会说它位于名为 path
的变量中),您就可以像使用文件一样使用它:
Scanner betalningsservice = new Scanner(path);
其余如前。
关于java - Java中如何自动检测文件位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24251727/