1

私のScala(Java上で実行)アプリケーションで、DVDメディアを含むすべてのドライブのリストを取得したいと思います。たとえば、次のようなものです。

  • / dev/scd0スタートレックDS9DVD1
  • / dev / scd0 4400 DVD1

ディスクの名前を取得できるかどうかはわかりませんが、とにかくパスは私にとって重要なことです。

私は純粋なJava/Scalaソリューション(file.ioのものを使用)を好みます。それが不可能な場合は、適切なLinuxファイル(/ proc / somethingなど)にアクセスすることもできます。

前もって感謝します!

4

2 に答える 2

1

java.io. *は運が悪いと思いますが、Linuxコマンドを呼び出してもかまわない場合は、次の方法でデータを組み立てることができます。

  1. 「マウント」を呼び出して、出力の最初の列をキャプチャします。
  2. 手順1で取得した各値で「volname」を呼び出します。

volnameのマニュアルページによると、ISO-9660ファイルシステム(DVDなど)のデータのみが返されるため、空を返すデバイスパスは無視できます。

于 2009-04-24T19:36:04.057 に答える
0

ドライブを純粋なJavaコードで取得する(テストされていない)可能性が1つあります。少なくともWindowsでは。

それは少しハッキーで、Linuxでは動作しません(Linuxは私が信じている太陽からそれほど多くの統合愛を得ていないためです)。

import javax.swing._
import javax.swing.filechooser._
val chooser = new JFileChooser()
val view = chooser.getFileSystemView()

FileSystemViewクラスは、可能なルートがドライブであるかどうかを確認するなど、いくつかの機能を提供します(isDrive())。Swingはこれを使用して、ファイルチューザーに適切なアイコンを表示します。これにより、ウィンドウの下で機能するはずです。これは、IIRCが正しい記号を表示するためです。Linuxでは、残念ながら「/」ルートしか表示されません。

これがLinuxで機能しない理由の1つは、Linux開発者がそのような情報をユーザースペースに提示するための好みの方法を絶えず変更していることです。現時点では、IIRChalとdbusです。たぶん、SUNはこれが変更されるたびに新しいJavaバージョンを公開したくなかったでしょう。

純粋なJavaがうまくいかない場合は、少しのjni(JNAなどのツールを使用している場合はもうそれほど難しくはありません)を使用して、LinuxAPIに直接アクセスできます。私はそれをしていませんが、興味があれば試すことができます。

于 2009-06-17T11:52:40.933 に答える