2017-10-05 7 views
0

私はスキャナのオブジェクトを作成しようとしていますが、私はできないFileNotFoundExceptionをので:image linkFileNotFoundException。ファイルパスを構築するには?

Scanner regionData = new Scanner(new File("RU.txt")); 

ライブラリ

import java.io.*; 
import java.util.Scanner; 
+0

イメージのファイルは 'C:// RU.txt'にあります。 'C:/ RU.txt'を試しましたか? – diginoise

+0

IOExceptionはスローする必要がありますかハンドルでなければなりません – Saedawke

答えて

0

あなたは、常にtry/catchブロック

Scanner regionData = null; 

try { 
    regionData = newScanner(new File("RU.txt")); 
} catch (FileNotFoundException e) { 
    // handle what happens if exception is thrown 
} 

あなたがプロジェクトのルートディレクトリにあるとニーズを指定したファイルにエラーが発生しやすいこの種のコードを囲む必要があります。

+0

このようにtryブロックの外側にスキャナを置くと、 'try'のスコープを超えてスキャナにアクセスできます。スキャナが 'try'の中で宣言されている@ TeneCursumの答えとは対照的に、そのtryブロックの中でしか使用できません。もう一つ考慮すべきことは、 'regionData.close();'を使用してメモリリークを防ぐためにスキャナが終了したら、それを忘れないようにすることです。代わりに、tryブロックへのパラメータとしてスキャナを宣言して初期化するリソースブロック付きのtryブロックを使用することもできます。自動的に閉じますが、そこでは同じスコープの問題が発生します。 – ClarksonDev

1

Windowsがファイルの区切りとしてバックスラッシュ '\' です。バックスラッシュはJavaのエスケープ文字であるため、これには '\\'が必要です。 MacやWindowsに応じて変更されるため、これがあなたのシステム上で使用されない場合は、File.Separatorを使用することは賢明です。

https://docs.oracle.com/javase/7/docs/api/java/io/File.html#separator

1

ここで何が起こっているあなたのIDE(その様子によるIntelliJのは)コードがFileNotFoundExceptionをを投げたことを警告していることです。あなたはとても似try/catchブロック内のコードをラップ試してみてください:

try { 
    Scanner regionData = new Scanner(new File("RU.txt")); 
} catch (FileNotFoundException e) { 
    // Handle the error here. e.g., 
    e.printStackTrace(); 
} 

また、他の人が述べたように、Windowsがファイルの区切り文字としてバックスラッシュ(「\」)を使用しています。 UNIXシステムでは「/」が使用されます。

関連する問題