6

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\tomcat6\webapps\sample-site (アクセスが拒否されました)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.(Unknown Source)
    at java .io.FileInputStream.(不明なソース)
    コントローラーの ScanEditRegions.fileToBIS
    (ScanEditRegions.java:52) コントローラーの ScanEditRegions.tidyHTML(ScanEditRegions.java:38)     コントローラー
    の ScanEditRegions.process(ScanEditRegions.java:64)
.ScanEditRegions.visitAllDirsAndFiles(ScanEditRegions.java:148)
    で controller.Manager.main(Manager.java:10)

4

4 に答える 4

10

投稿に貼り付けたスタックトレースから判断すると、ファイルを読み取る権限がないと思います。

File クラスを使用すると、ファイルに対して便利なチェックを実行できます。

boolean canExecute();
boolean canRead();
boolean canWrite();
boolean exists();
boolean isFile();
boolean isDirectory();

たとえば、次を確認できます: exists() && isFile() && canRead() ファイルを読み取れない理由に応じて、より適切なエラー メッセージを出力します。

于 2009-06-16T06:11:45.120 に答える
4

あなたはそれを確認したいかもしれません(可能性の高い順に):

  1. ファイルが存在します。
  2. ファイルはディレクトリではありません。
  3. ユーザーまたは Java プロセスには、ファイルを開く権限があります。
  4. 別のプロセスがファイルをロックしていない (おそらく、FileNotFoundException ではなく標準の IOException を受け取るため)
于 2009-06-16T06:04:07.107 に答える
3

これは、OS のファイル権限設定に関係しています。特定のディレクトリへのアクセス権を持たないユーザーとして Java プロセスを開始しました。

于 2009-06-16T05:59:12.370 に答える
-1

Eclipse または任意の Java IDE からステートメントを実行していると思いますが、ターゲット ファイルも IDE ワークスペースに存在します。Eclipse が同じワークスペース内のターゲット ファイルを読み取れないため、エラーが発生しています。コマンドプロンプトからコードを実行できます。例外を介してはなりません。

于 2012-03-24T15:34:53.477 に答える