8

裏話...

私はテレビ番組が大好きですが、家に帰るのは月に2回だけです。残りの時間はインターネットのない家に住んでいるので(大学に近いので、無料のWi-Fiが使えます!-動作するときは-)、新しい番組でポータブルハードディスクを更新できる小さなソフトウェアが必要でしたポッドキャストと同期されたファイルサーバーがその仕事をしている家に帰ったとき。私はJavaを使用してそれを行い、それは機能します。

問題

現在、そのusbhdのマウントされたディレクトリを保存した.propertiesファイルがあります。十分ではない。ソフトウェアがすべてのUSBマスストレージデバイスを検出し、ファイルの保存に使用するデバイスをユーザーが選択できるようにしたいと思います。どうやってやるの?

詳細

a)Javaである必要があります(つまり、ローカルホストコマンドの実行などでも機能する可能性がありますdir

b)私のサーバーはWindows上にありますが、OSに依存しないソリューションであることが望ましいです

4

3 に答える 3

3

あなたの質問では見ませんでしたが、ファイルルートの配列を返す File.listRoots() メソッドに精通していると思います。

次に、それらを反復処理して、それらがフラッシュ ドライブであるかどうかを識別しようとすることができます。いくつかのハックは次のようになります。

File[] roots = File.listRoots();

if (roots == null) {
  // you have a different problem here.  Is it even a computer we are talking about?
}

// Iterate through roots
for (File root : roots) {
    if (root.canWrite()) {  // Or, you could use File.createTempfile with that folder
        // if root does not contain some well know files
        // Or, if root contains some well known files
        // Based on these 2 hacks, or possible other characteristics, you may be reasonably sure
    }
}

それが私が提供できるすべてです。より多くのネイティブ プログラムを使用して、Java プログラムから呼び出すことで、さらに多くのことができます。

于 2010-09-30T15:48:13.450 に答える
2

nio には美しい方法が用意されています。これをチェックしてください:

import java.nio.file.*;
for(Path p:FileSystems.getDefault().getRootDirectories()){
    System.out.println(p);
}

すべてのルートをパス オブジェクトとして取得します。

于 2014-02-28T10:41:40.317 に答える
2

javax.usbプロジェクトを確認できます。現在、Linux と BSD 用の 2 つの認定された実装と、Windows 用の実装があります(まだ完全ではないようですが、接続されている USB デバイスを一覧表示できると思います)。

しかし、USBドライブのみをリストする可能性(代わりに、@Amrinder Arora回答のようなすべてのドライブ)が新しいライブラリセットを採用し、半完全な実装に苦労する価値があるかどうかはわかりません...

于 2010-10-01T09:16:11.347 に答える