我只是想知道是否有任何方法让你的程序找到你想要使用的文件,只需给出名称而不用像这样编写整个搜索路径。
Scanner betalningsservice = new Scanner(new File("/afs/nada.kth.se/home/i/u1vxrjgi/betalningsservice.txt"));
String line1 = betalningsservice.nextLine();
你可以看到它是一条很长的路径,我希望程序能够检测到文件" betalningsservice.txt"文件位于计算机中的位置(如果文件已移动到其他位置)。任何提示家伙? :)
提前致谢
答案 0 :(得分:1)
由于在这个问题中对于究竟需要什么有一些争论,我将发布另一个答案。
如果您正在使用Java 8,则使用Files.find
功能可以更轻松地查找文件。它的优点是能够限制搜索的深度,从而控制搜索速度。这是一个将所有匹配文件的路径粘贴到List中的示例。如果您找到多个匹配文件,则可以让用户选择正确的文件:
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));
关于完成搜索逻辑的一个大statement语句是否更具可读性或更低可读性,但是那个Java 8适合于你,这是值得商榷的。
如果您想要提升,还可以将FileVisitOption
附加到find
功能的参数列表中(例如,按照符号链接)。
值得注意的是,在Java 8中,Path
通常将File
替换为表示文件和文件夹的方式,因此路径列表。一旦您选择了正确的路径(我们将其称为path
中的变量),您可以使用它与使用文件的方式类似:
Scanner betalningsservice = new Scanner(path);
其余的就像以前一样。
答案 1 :(得分:0)
没有实用/可靠的方法可以在计算机上的任何位置找到该文件。
但是,如果您知道工作目录,则可以使用相对文件路径。因此,如果您的工作目录为/afs/nada.kth.se/home/i/u1vxrjgi
,则可以通过new File("betalningsservice.txt")
引用该文件。同样,如果您的工作指针为/afs/nada.kth.se/home/i
,则可以将该文件称为new File("u1vxrjgi/betalningsservice.txt")
。
另一种选择是从类路径中读取。这可以通过将类加载器设置为get a resource来实现。
答案 2 :(得分:0)
File
也可以使用相对路径创建文件。只是不要用斜杠开始文件名。例如,如果您从文件夹&#34; /afs/nada.kth.se/home/i/u1vxrjgi /&#34;运行该程序,您可以使用:
new File("betalningsservice.txt")
...那样就能找到你想要的文件。