所以,我正在编写一个需要遍历目录中所有文件的程序,这就是我目前所拥有的。
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:\ Users \ Jarrett Willoughby \ Documents \ School \ CSE201 \ Project Stuff。
我尝试的输入是" C:\ Users \ Jarrett Willoughby \ Documents \ School \ CSE201 \ Project Stuff \ TestFiles" ,但它似乎不起作用。但是,当输入只是" TestFiles"它确实。我希望能够访问不同文件夹中的目录,但由于某种原因,长方法不起作用。
编辑:我不知道错误是什么。我所知道的就是当我把" TestFiles"进入扫描仪它工作正常,当我尝试完整的文件路径它不会崩溃,但它不会产生我想要的结果。
答案 0 :(得分:1)
Scanner#next()
读取以空格分隔的(默认情况下)字符串标记。
您的意见:
C:\Users\Jarrett Willoughby\Documents\School\CSE201\Project Stuff\TestFiles
包含空格,因此next()
只读取" C:\ Users \ Jarrett"。
您可以改为使用Scanner#nextLine()
。
将来,要自行调试,要么在调试器中单步执行以查看变量的值,要么添加打印输出以进行验证,例如:这会让你快速找到解决方案:
System.out.println("input was " + input);