如何使用完整文件路径访问目录?

问题描述:

所以,我正在编写一个程序,需要遍历目录中的所有文件,这是我现在拥有的。如何使用完整文件路径访问目录?

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”放入扫描仪时,它工作正常,当我尝试完整的文件路径时,它不会崩溃,但它不会产生我想要的结果。

+1

“它似乎不工作”是不是你的问题的一个准确的描述,和你的源代码并没有告诉你如何提供文件路径到您的代码 - 这可能是您的问题所在。因此,请编辑您的问题,并附上错误消息以及您的部分源代码。我的第一个猜测是你在Java中提供了一个字符串的路径 - 在这种情况下,你需要加倍所有反斜杠('C:\\ Users \\ Jarret ...'等),因为反斜杠是一个特殊的转义字符一个Java字符串。 –

+0

我试过双反斜杠,它似乎并没有解决这个问题。 – jmon117

Scanner#next()读取以空格分隔的(默认情况下)字符串标记。

您的输入:

C:\Users\Jarrett Willoughby\Documents\School\CSE201\Project Stuff\TestFiles 

包含空格,所以next()只是读取 “C:\用户\贾勒特”。

您可以改为使用Scanner#nextLine()。在未来,为了自己调试,可以在调试器中逐步查看变量具有的值,或者添加打印输出以验证,例如,这会导致你快速的解决方案:

System.out.println("input was " + input); 
+0

感谢您的帮助!非常感激。 – jmon117