- PR -

選択ディレクトリの容量表示方法が分かりません。。。

投稿者投稿内容
ToGo
常連さん
会議室デビュー日: 2002/03/16
投稿数: 46
投稿日時: 2005-09-03 21:05
引用:

ディレクトリを指定してその容量(サイズ)を表示させたいのですが・・・。
やり方がわかりません・・・。
FileクラスやSystemクラスではないのでしょうか!?


残念ながら来年リリース予定のJava SE 6でFileクラスに追加される予定です。
現時点での実現手段は、JNI APIを用いてWindowsのネイティブ・コードで
ディスク容量を取得することになります。
WindowsのAPIだと、GetDiskFreeSpaceExW というシステムコールがあります。
IB
会議室デビュー日: 2005/09/03
投稿数: 18
お住まい・勤務地: 神奈川
投稿日時: 2005-09-03 22:01
ToGoさんへ
ご返信ありがとうございます。

貴重な情報、ありがとうございます。
現時点のJavaでは、無理なんですね。。。
「外部コマンド」や「GetDiskFreeSpaceExW」も
今のJavaでは無理ですよね。

う〜ん、困った・・・でも、無理なものは無理。
貴重な情報、本当にありがとうございました!
ToGo
常連さん
会議室デビュー日: 2002/03/16
投稿数: 46
投稿日時: 2005-09-03 22:27
引用:

現時点のJavaでは、無理なんですね。。。
「外部コマンド」や「GetDiskFreeSpaceExW」も
今のJavaでは無理ですよね。


Javaには、"Java Native Interface (JNI)"と呼ぶ、C言語で書かれたライブラリ
呼び出す仕組みが標準で備わっています。したがって、今回の場合、Win32 APIの
GetDiskFreeSpaceExW関数を呼び出してディスク容量を取得するC言語のライブラリを、
JNIの規定に従って作成し、これをJava側から呼び出すことで実現する方法が考えられ
ます。

JNIの仕組みとC言語でのライブラリの作り方については、様々な書籍なりWebなりを
調査すれば情報はそれなりにあるかと思います。

JNIの敷居が高ければ、外部プロセスでWindowsのコマンドプロンプト上で"dir c:"と
いったコマンドを実行し、実行結果の文字列から空き容量の部分を切り出すという方法
もあります。dirコマンドは最後に空きディスク容量をメッセージに表示します。
J2SE 5.0では、java.lang.ProcessBuilderクラスを使います。1.4までのバージョンでは
java.lang.Runtimeクラスのexecメソッドを使いますが、ちょっと面倒だったかと思い
ます。

スキルアップ/キャリアアップ(JOB@IT)