私はスキャナのオブジェクトを作成しようとしていますが、私はできないFileNotFoundExceptionをので:image linkFileNotFoundException。ファイルパスを構築するには?
Scanner regionData = new Scanner(new File("RU.txt"));
ライブラリ
import java.io.*;
import java.util.Scanner;
私はスキャナのオブジェクトを作成しようとしていますが、私はできないFileNotFoundExceptionをので:image linkFileNotFoundException。ファイルパスを構築するには?
Scanner regionData = new Scanner(new File("RU.txt"));
ライブラリ
import java.io.*;
import java.util.Scanner;
あなたは、常にtry/catchブロック
Scanner regionData = null;
try {
regionData = newScanner(new File("RU.txt"));
} catch (FileNotFoundException e) {
// handle what happens if exception is thrown
}
あなたがプロジェクトのルートディレクトリにあるとニーズを指定したファイルにエラーが発生しやすいこの種のコードを囲む必要があります。
このようにtryブロックの外側にスキャナを置くと、 'try'のスコープを超えてスキャナにアクセスできます。スキャナが 'try'の中で宣言されている@ TeneCursumの答えとは対照的に、そのtryブロックの中でしか使用できません。もう一つ考慮すべきことは、 'regionData.close();'を使用してメモリリークを防ぐためにスキャナが終了したら、それを忘れないようにすることです。代わりに、tryブロックへのパラメータとしてスキャナを宣言して初期化するリソースブロック付きのtryブロックを使用することもできます。自動的に閉じますが、そこでは同じスコープの問題が発生します。 – ClarksonDev
Windowsがファイルの区切りとしてバックスラッシュ '\' です。バックスラッシュはJavaのエスケープ文字であるため、これには '\\'が必要です。 MacやWindowsに応じて変更されるため、これがあなたのシステム上で使用されない場合は、File.Separatorを使用することは賢明です。
https://docs.oracle.com/javase/7/docs/api/java/io/File.html#separator
ここで何が起こっているあなたの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システムでは「/」が使用されます。
イメージのファイルは 'C:// RU.txt'にあります。 'C:/ RU.txt'を試しましたか? – diginoise
IOExceptionはスローする必要がありますかハンドルでなければなりません – Saedawke