2011-07-19 130 views
0

それぞれのファイルを読み込もうとすると、Javaのディレクトリをループしています。ディレクトリには、アクセスを拒否するいくつかのsvnファイルが含まれています。私はファイル名をテストし、svnファイルをスキップすることができましたが、アクセスが拒否された他のファイルが見つかった場合、このソリューションは堅牢ではありません。私はこれを試しました:java.io.FileNotFoundException:.svn(アクセスが拒否されました)

for(File f : dir.listFiles()){ 
if(f.canRead()){ 
    System.out.println("Trying " + f.getAbsolutePath()); 
    try{ 
     Scanner sc = new Scanner(f); 
    } 
    catch(IOException e){ 
     e.printStackTrace(); 
    } 
    continue; 
} 
} 

しかし、私が.svnファイルを取得すると、スキップしません。

Trying C:\dir\.svn 
java.io.FileNotFoundException: dir\.svn (Access is denied) 

canRead()canWrite()、およびcanExecute()すべてが同じ問題を抱えている:私はこのプリントアウトを取得します。 拒否されたアクセスファイルをスキップするために使用できるcanXXX()以外に何かがありますか?

答えて

6

.svnはディレクトリです。おそらくScannerで読めるものではありません。

これにあなたの状態を変更し

if(f.canRead() && !f.isDirectory()) 
3

あなたはFileNotFoundExceptionをキャッチし、次のファイルに移動することができます。

+0

正確に。とにかくそれをしなければなりません、なぜ追加コードを書くのですか?私は単にディレクトリをフィルタリングし、try/catchを使います。 – EJP

関連する問題