Java 1.6 でのシンボリック リンクの決定
Java 1.6 環境内のディレクトリを効率的に走査するためには、実際のディレクトリを区別することが不可欠になります。ディレクトリとディレクトリへのシンボリック リンク。 File オブジェクトがディレクトリを表す場合、次の条件でそれがシンボリック リンクであるかどうかを正確に判断できますか?
if (file.getAbsolutePath().equals(file.getCanonicalPath())) { // Real directory } else { // Possible symbolic link }
答え:
この手法は次のことを示す可能性があります。シンボリック リンクであるため、最終的な保証はできません。絶対パスと正規パスの不一致は、シンボリック リンクを最終的に確認するのではなく、単に特別な処理の必要性を強調するだけである可能性があります。
代替アプローチ:
Apache Commons が提供するものより信頼性の高いソリューション。親ディレクトリの正規パスとそのファイル自体の正規パスを比較することによって、ファイルがシンボリック リンクであるかどうかを判断します。
<code class="java">public static boolean isSymlink(File file) throws IOException { File canon; if (file.getParent() == null) { canon = file; } else { File canonDir = file.getParentFile().getCanonicalFile(); canon = new File(canonDir, file.getName()); } return !canon.getCanonicalFile().equals(canon.getAbsoluteFile()); }</code>
この洗練された方法は、比較することによってシンボリック リンクを識別するより正確な方法を提供します。ファイルの正規パスとその親ディレクトリの正規パス。
以上がJava 1.6 でシンボリック リンクを正確に判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。