File オブジェクトで FileInputStream を初期化するときに FileNotFoundException を取得する
-
14-09-2019 - |
質問
File オブジェクトを使用して FileInputStream オブジェクトを初期化しようとしています。回線で FileNotFound エラーが発生します
fis = new FileInputStream(file);
正規表現を実行するために同じ方法でこのファイルを何度も開いたので、これは奇妙です。
私の方法は次のとおりです。
private BufferedInputStream fileToBIS(File file){
FileInputStream fis = null;
BufferedInputStream bis =null;
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bis;
}
java.io.FileNotFoundException:C:\dev\server omcat6\webapps\sample-site (アクセスが拒否されました)
java.io.FileInputStream.open(ネイティブメソッド)で
java.io.FileInputStream で (不明なソース)
java.io.FileInputStream で (不明なソース)
コントローラー.ScanEditRegions.fileToBIS(ScanEditRegions.java:52) で
コントローラー.ScanEditRegions.tidyHTML(ScanEditRegions.java:38) で
コントローラー.ScanEditRegions.process(ScanEditRegions.java:64) で
コントローラー.ScanEditRegions.visitAllDirsAndFiles(ScanEditRegions.java:148) で
コントローラー.Manager.main(Manager.java:10) で
解決
私はあなたがファイルの読み取り権限を持っていないことを推測したいあなたはあなたのポストに貼り付けられたスタックトレースから判断する。
Fileクラスは、そのうちのいくつかは、ファイル上で便利なチェックを実行することができます
boolean canExecute();
boolean canRead();
boolean canWrite();
boolean exists();
boolean isFile();
boolean isDirectory();
たとえば、あなたがチェックできます。()&& ISFILE()&& canRead()が存在し、ファイルを読み込む傾ける理由に応じて、より優れたエラー・メッセージを出力
他のヒント
これは、OSのファイルパーミッションの設定に関係しています。あなたは、特定のディレクトリへのアクセス権を持っていないユーザーとしてJavaプロセスを開始しました。
(可能性の高い順に) 次のことを確認するとよいでしょう。
- ファイルは存在します。
- ファイルはディレクトリではありません。
- あなたまたは Java プロセスには、ファイルを開く権限があります。
- 別のプロセスがファイルをロックしていません (おそらく、FileNotFoundException ではなく標準の IOException を受け取るでしょう)
私はあなたが日食または任意のJava IDEとターゲット・ファイルから文を実行するも、IDEワークスペースに存在していると思います。 Eclipseのカントは、同じワークスペース内のターゲット・ファイルを読み込むと、あなたは、エラーを取得しています。コマンドプロンプトから、あなたのコードを実行することができます。これは、任意の例外を通じてべきではありません。