2016-09-19 84 views
0

所以,我正在編寫一個程序,需要遍歷目錄中的所有文件,這是我現在擁有的。如何使用完整文件路徑訪問目錄?

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

回答

1

Scanner#next()讀取以空格分隔的(默認情況下)字符串標記。

您的輸入:

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

包含空格,所以next()只是讀取 「C:\用戶\賈勒特」。

您可以改爲使用Scanner#nextLine()。在未來,爲了自己調試,可以在調試器中逐步查看變量具有的值,或者添加打印輸出以驗證,例如,這會導致你快速的解決方案:

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

感謝您的幫助!非常感激。 – jmon117

相關問題