OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

javaでフォルダのbyte数を知るには・・・

  • すぐに回答を!
  • 質問No.193824
  • 閲覧数254
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

現在、web上で使用するファイルマネージャー的なアプリケーションをservletで作成しています。
それで、当然アップロードできる領域に制限を加えるようにしたいと考えたのですがそのフォルダ
が今、何メガ使用しているのかを知らなくてはいけません。フォルダが一つだけならその中にある
ファイルのbyte数を全て足すだけでよかったのですが現在、新規フォルダ作成機能を追加したことで
フォルダの中にフォルダを作れるます。それでbyte数を足す動作に手を加えています。
 しかし、これがうまくいっていません。
JAVAのメソッドを調べてみましたが、一発でフォルダのbyte数を知ることができるメソッドは見つかり
ませんでした。
 今、行っているロジックは
「フォルダ内でファイルかフォルダかを判別し、フォルダならその中を見る。ファイルならbyteを足す」
というのを繰り返して行っているだけなのですが結果のbyte数が合わないのです。
上記のやりかたよりスマートなやり方でフォルダのbyte数を知る方法がきっとあるはずなのですが
どうにも思いつきません。
良きアドバイスをよろしくお願いします。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル11

ベストアンサー率 47% (160/334)

ファイルのサイズと,ファイルがディスク上で実際に占有する領域のサイズが一致していないために起きる現象ではないかと思います。

ふつう,ファイルシステムは固定長(4,8,16,32KBなど)の最小領域単位でディスク上の領域を管理します。従って,例えば最小領域サイズが4KBの場合,1バイトのファイルでも4000バイトのファイルでもディスク上では4KBを占有します。

ディスク上でファイルが実際に占有するサイズを取得するメソッドはJavaの標準APIには含まれていないようです。おそらく,プラットフォーム(ファイルシステムの種類や設定)に依存するからでしょう。

特定のフォルダ下のファイルサイズの総計を求めるのは,Javaの外側でやったほうがいいのではないかと思います。例えば,OSがUnix/Linuxなら,java.lang.Runtime#exec() を使って,duを実行して結果を取得するなどの方法があると思います。Windowsにdu相当のものがあるかどうかについては知りません。

あるいは,一般にアップロードするファイルのサイズが大きければ,上記の誤差は割合としては小さくなるので,思い切って無視してしまうという方法も考えられます。
お礼コメント
noname#4663

アドバイスありがとうございます。
勉強になりました。
なんとか問題解決することができました。
また、いろいろ教えてください。
投稿日時 - 2002-01-09 11:12:52
-PR-
-PR-
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ