5

Java で File.listRoots() を使用して、デスクトップで使用可能なすべてのドライブを一覧表示しています。マップされたドライブがいくつかあります。ルートを一覧表示すると、ローカル ドライブとマップされたドライブが取得されます。マップされたドライブを除外するために、次のコード スニペットを使用しました。

for (File drive :File.listRoots()){
   String typeDescription = FileSystemView.getFileSystemView().getSystemTypeDescription(drive);
}

返されたタイプの説明に基づいて、ドライブをフィルタリングしています。ただし、これは普遍的な標準ではなく、他のオペレーティング システムでは受け入れられません。Windows でのみサポートされます。また、言語制限もあります(型式説明は英語のみ対応)。マップされたドライブをグローバルにフィルタリングするための他のソリューションを教えてください。

注:
JDK1.6 に固有である必要があります。

4

1 に答える 1

1

問題が Windows のみにある場合は、次を使用しないでください。

if (System.getProperty("os.name").contains("Windows"))?

を使用して (人間の) 言語を独立して実行する C++ プログラムを作成し、それを Java の関数IVdsDisk::GetPropertiesとしてインポートできます (また、 Windows を実行している場合にのみメソッドを実行するように VM に指示します)。nativenative

開始するための MSDN リンク

VDS_DISK_PROP.dwMediaTypeFILE_DEVICE_NETWORKかかを確認しますFILE_DEVICE_NETWORK_FILE_SYSTEMサポートされているすべてのタイプは、 winioctrl.hで確認できます。

Java で値にアクセスできる可能性はありますが、Java には通常、プラットフォーム固有のものがないため、疑わしいと思います。

于 2012-10-23T15:48:07.790 に答える