2016-09-19 1 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

関連する問題