- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javaでフォルダのbyte数を知るには・・・)
Javaでフォルダのbyte数を知るには
このQ&Aのポイント
- Javaでフォルダ内のbyte数を取得する方法について教えてください。
- 現在、web上でファイルマネージャー的なアプリケーションをservletで作成しています。フォルダの中にフォルダを作成できるようにしたため、フォルダのbyte数を正確に取得することができません。
- 現在のロジックでは、フォルダ内でファイルかフォルダかを判別し、フォルダならその中身を見て、ファイルならbyte数を足していますが、結果のbyte数が合わない問題があります。より効率的な方法やアドバイスを教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ファイルのサイズと,ファイルがディスク上で実際に占有する領域のサイズが一致していないために起きる現象ではないかと思います。 ふつう,ファイルシステムは固定長(4,8,16,32KBなど)の最小領域単位でディスク上の領域を管理します。従って,例えば最小領域サイズが4KBの場合,1バイトのファイルでも4000バイトのファイルでもディスク上では4KBを占有します。 ディスク上でファイルが実際に占有するサイズを取得するメソッドはJavaの標準APIには含まれていないようです。おそらく,プラットフォーム(ファイルシステムの種類や設定)に依存するからでしょう。 特定のフォルダ下のファイルサイズの総計を求めるのは,Javaの外側でやったほうがいいのではないかと思います。例えば,OSがUnix/Linuxなら,java.lang.Runtime#exec() を使って,duを実行して結果を取得するなどの方法があると思います。Windowsにdu相当のものがあるかどうかについては知りません。 あるいは,一般にアップロードするファイルのサイズが大きければ,上記の誤差は割合としては小さくなるので,思い切って無視してしまうという方法も考えられます。
お礼
アドバイスありがとうございます。 勉強になりました。 なんとか問題解決することができました。 また、いろいろ教えてください。