2012-03-01 96 views
-1

引用符付きのファイル名と引用符で囲まれていないファイル名を入力しようとしましたが、最初のスペースまでしか処理しませんでした。パスに空白がない場合でも、ファイルは検出されませんが、パスは正しく表示されます。それを修正するには?"ファイル名、ディレクトリ名、またはボリュームラベルの構文が正しくありません"

Enter the filename: a b c 
java.io.FileNotFoundException: a (The system cannot find the file specified) 
Enter the filename: "a b c " 
java.io.FileNotFoundException: "a (The system cannot find the file specified) 

これは、ファイル入力を取得する最も良い方法ですか? また、IOException、FileNotFoundExceptionをメインに追加するか、代わりにtry {}を使用する必要がありますか?

System.out.print("Enter the filename: "); 

Scanner stdin = new Scanner((System.in)); //Keyboard input 
String nextDataValue, data, popped="", tag="", fileName=stdin.next(); 

FileInputStream fis = null; 
    try { 
     fis = new FileInputStream(fileName); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
InputStreamReader inStream = new InputStreamReader(fis); 
BufferedReader in = new BufferedReader(inStream); 

data=in.readLine(); 
+0

スペースを含むファイル名を読み取ろうとしていますか? –

+0

パスにスペースが含まれています。 – user93200

+2

'next()'の代わりに 'nextLine()'を使うか、@MДΓΓLLLLLLの提案に従ってください。 – chrisn

答えて

3

スキャナでは、スペース区切りのトークンがかなり明確に表示されます。 the Scanner JavaDocsから:

A Scanner、デフォルトでは空白に一致する区切り文字パターンを、使用してトークンにその入力を破ります。

だからあなたはそれを持っています。私はそれを言いたくはありませんが、これはRTFDのケースです。

別の区切り記号を使用するか、Scanner#next()の代わりにScanner#nextLine()を使用してください。

+0

さらに詳しい情報を提供する必要があります。 –

関連する問題