如何使用完整文件路径访问目录?
问题描述:
所以,我正在编写一个程序,需要遍历目录中的所有文件,这是我现在拥有的。如何使用完整文件路径访问目录?
import java.io.File;
import java.util.Scanner;
public class Main {
public static void main(String args[]) throws Exception {
VotingData v = new VotingData();
Scanner in = new Scanner(System.in);
System.out.print("Please input a directory.");
String input = in.next();
File dir = new File(input);
File[] directoryListing = dir.listFiles();
if (directoryListing != null) {
for (File child : directoryListing) {
v.merge(RecordReader.readRecord(child.toString()));
}
}
else {
// do nothing right now.
}
String[] sub1 = {"Montgomery","Miami"};
TextualRepresentation.toString(v.getAllResults());
TextualRepresentation.toString(v.getCountyResults("Montgomery"));
TextualRepresentation.toString(v.getCountyResults("Miami"));
TextualRepresentation.toString(v.getCountyResults("Butler"));
TextualRepresentation.toString(v.getSubsetResults(sub1));
}
}
该项目的文件路径为C:\用户\贾莱特 - 威洛比\文档\学校\ CSE201 \项目的东西。
我想要的输入是“C:\ Users \ Jarrett Willoughby \ Documents \ School \ CSE201 \ Project Stuff \ TestFiles”,但它似乎不起作用。但是,当输入只是“TestFiles”它就是。我希望能够访问不同文件夹中的目录,但出于某种原因,长方法不起作用。
编辑:我不知道错误是什么。我所知道的是,当我将“TestFiles”放入扫描仪时,它工作正常,当我尝试完整的文件路径时,它不会崩溃,但它不会产生我想要的结果。
答
Scanner#next()
读取以空格分隔的(默认情况下)字符串标记。
您的输入:
C:\Users\Jarrett Willoughby\Documents\School\CSE201\Project Stuff\TestFiles
包含空格,所以next()
只是读取 “C:\用户\贾勒特”。
您可以改为使用Scanner#nextLine()
。在未来,为了自己调试,可以在调试器中逐步查看变量具有的值,或者添加打印输出以验证,例如,这会导致你快速的解决方案:
System.out.println("input was " + input);
+0
感谢您的帮助!非常感激。 – jmon117
“它似乎不工作”是不是你的问题的一个准确的描述,和你的源代码并没有告诉你如何提供文件路径到您的代码 - 这可能是您的问题所在。因此,请编辑您的问题,并附上错误消息以及您的部分源代码。我的第一个猜测是你在Java中提供了一个字符串的路径 - 在这种情况下,你需要加倍所有反斜杠('C:\\ Users \\ Jarret ...'等),因为反斜杠是一个特殊的转义字符一个Java字符串。 –
我试过双反斜杠,它似乎并没有解决这个问题。 – jmon117