Windows64ビットでOracleJava7を使用しています。
Files.createSymbolicLinkを使用してシンボリックリンクを作成すると、次の動作に気付きます。
- ターゲットがディレクトリの場合、「ディレクトリシンボリックリンク」が作成されます。
- ターゲットがファイルの場合、「ファイルシンボリックリンク」が作成されます。
- ターゲットが存在しない場合は、「ファイルシンボリックリンク」が作成されます。
シンボリックリンクのタイプは固定されており、ターゲットへの変更に関係なく、変更されることはありません。
Windowsのネイティブmklink
コマンドを使用すると、リンクタイプを強制的に「ディレクトリシンボリックリンク」にすることができます。ネイティブJavaAPIまたはいくつかのライブラリを使用してこれを実現することは可能ですか?
些細で醜い方法の1つは次のとおりです。
- ターゲットがディレクトリの場合は、リンクを作成するだけです
- ターゲットが存在しない場合は、新しい空のターゲットディレクトリを作成し、リンクを作成して、ディレクトリを削除します。
- ターゲットがファイルの場合...それを処理します(移動し、#2を適用し、元に戻します)。
醜い。