- - PR -
選択ディレクトリの容量表示方法が分かりません。。。
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-09-03 11:26
おはようございます。
ディレクトリを指定してその容量(サイズ)を表示させたいのですが・・・。 やり方がわかりません・・・。 FileクラスやSystemクラスではないのでしょうか!? どなたか教えていただけないでしょうか。 ご返答お待ちしてます。 |
|
投稿日時: 2005-09-03 13:14
にた話題が以前ありました。
参考になるでしょうか。できなさそう、て結論になってます。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=14453&forum=12 |
|
投稿日時: 2005-09-03 13:34
未記入さんの言っている「ディレクトリを指定してその容量」の定義は
どんなですか? 「ディレクトリ配下に含まれるファイルの長さの総和」だとしたら、 File#list() でリストを取得して File#length() を足していったら できますね。再帰的に呼び出せばサブディレクトリも含んだサイズを 求められますね。 インギさんのポインタはデバイスの(空き)容量の話ですね。 |
|
投稿日時: 2005-09-03 13:56
インギさん、Java僧さんへ
ご返信ありがとうございます。 すみません、私の語彙不足でした。 データをバックアップする際に、対象階層の残容量表示を試みています。 「パスで指定したディレクトリが属する、ルートドライブ容量」を 取得できれば、そこからJava僧さんから教えて頂いた 「File#list() でリストを取得して File#length()」の方法で使用容量を引いて、 残容量を求められるのですが・・・。 インギさんのご返信によると、出来なさそうですね。。。 ともみさんの「動作プラットフォーム毎の外部コマンドを実行して、 その出力情報を抜き出す方法」しか存在しないのであれば、それを試して みたいのですが。どのような方法なのか、良く分かりません。 度々すみません、ご存知でしたら、教えて頂きたいです。 宜しくお願い致します。 |
|
投稿日時: 2005-09-03 14:04
Java の動作する OS はたくさんありますので、まず対象としているプラットフォームを挙げてはいかがでしょうか。
|
|
投稿日時: 2005-09-03 14:18
単純にファイルのサイズを測っても、
実際にはファイルアロケーションユニットが存在しますので、 バックアップを目的とするなら、単純な合計値では無理でしょう。 例えば、Windows/FAT32の場合8Gまでのディスク容量なら4KBが最低単位になります。 1KBのファイル2つで8KB消費されます。 また、ディスク容量やファイルアロケーションユニットのサイズを 測る機能はJavaにはありませんので、 ・バックアップを実行 ・失敗を判定(IO例外) ・失敗ならバックアップを削除 という流れで処理するのが現実的でしょう。 |
|
投稿日時: 2005-09-03 14:56
インギさん、かつのりさんへ
ご返信ありがとうございます。 今回、対象としているプラットフォームOSは、Windows系(2K,XP)です。 1.それらを「外部コマンドを実行してその出力情報(ルートドライブ容量)を取得」 2.そこから「File#list() でリストを取得後 File#length()」で使用容量を引いて、大体の残容量を求める 3.かつのりさんの言う通り「例外処理」を盛り込んだ処理を記述。 という流れでしょうか!? 1.は、どのような「外部コマンド」を記述すれば良いのでしょうか!? 教えて頂きたいです。 宜しくお願い致します。 |
|
投稿日時: 2005-09-03 15:42
対象のプラットフォームに対してコピーした際の正確な容量がわからない以上、
容量を測らないでコピーすればいいだけだと思います。 外部コマンドで調べるにしても、スパンボリュームや仮想ドライブなどの 考慮も必要ではないでしょうか。 Windowsの操作でファイルのコピーを行う時に、 エラーが出てくるまでコピーを行っていますよね。 そんな感じで充分だと思いますが。 |