• 締切済み

いつもお世話になっております。

いつもお世話になっております。 本日は空き容量を確認してその後に文字列でMなりGなり付けたいので その方法を教えて頂ければと思い、こちらに書き込ませて頂きます。 省略しながら書き込ませて頂きます。 import org.apache.commons.io.FileSystemUtils; FileSystemUtils fsUtil = new FileSystemUtils(); private long freeSpace1 = 0; String pathname = "C:\" this.freeSpace1 = fsUtil.freeSpace(pathname); System.out.println(this.freeSpace1); このようにした場合にコンソールに表示される内容は 44415581184・・・となります。 これでは確認しづらいので何とか 普段見慣れている、444Gbyte などと表示したいと思っております。 桁数を指定すればその桁数で四捨五入するメソッドは既に出来ており 今回はこの長いlong型の数字をどのようにすればいいのか 教えて頂ければと思います。 宜しくお願い致します。

みんなの回答

  • ontojava
  • ベストアンサー率61% (8/13)
回答No.2

難しく考えなくてもいいとおもいます。 commons.apache.org/io/api-release/index.html freeSpaceKb public static long freeSpaceKb(String path) throws IOException Returns the free space on a drive or volume in kilobytes by invoking the command line. FileSystemUtils.freeSpaceKb("C:"); // Windows FileSystemUtils.freeSpaceKb("/volume"); // *nix 1.4 APIではfreeSpaceKbの方を使ってくれとなっていますね。 KByteになっているので後は 1024で割ればMByte 1024で2回割ればGByteです。 計算結果をDoubleにしたい場合は1024.0で割ればいいです。 private long freeSpace_Kbyte = 0; freeSpace_Kbyte = fsUtil.freeSpaceKb(pathname); Double mb_d = freeSpace_Kbyte /1024.0; Double gb_d = freeSpace_Kbyte /1024.0 / 1024.0 ; 教えてgooにもオラクルのフォーラムのようなcodeタグがあるといいですね。 import org.apache.commons.io.FileSystemUtils; import java.io.IOException; import java.math.BigDecimal; public class ApacheFileSystemUtilsTest { private FileSystemUtils fsUtil = new FileSystemUtils(); private long freeSpace_Kbyte = 0; private static String pathname; public ApacheFileSystemUtilsTest() { try{ freeSpace_Kbyte = fsUtil.freeSpaceKb(pathname); System.out.printf("%12d KByte\n",freeSpace_Kbyte); Double mb_d = freeSpace_Kbyte /1024.0; BigDecimal bi = new BigDecimal(String.valueOf(mb_d)); System.out.printf("%12.1f MByte\n",bi.setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue()); Double gb_d = freeSpace_Kbyte /1024.0 / 1024.0 ; BigDecimal bi2 = new BigDecimal(String.valueOf(gb_d)); System.out.printf("%12.1f GByte\n", bi2.setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue()); }catch(IllegalArgumentException ae) { ae.printStackTrace(); }catch(IllegalStateException se){ se.printStackTrace(); }catch(IOException ioe){ ioe.printStackTrace(); } } public static void main (String[] argv ) { pathname = argv[0]; ApacheFileSystemUtilsTest test = new ApacheFileSystemUtilsTest (); } }

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

普通に割り算したらどお? ついでに言うと1000で割っちゃダメよ? 割るなら1024ね。

theyouth
質問者

お礼

askaaskaさん ご返信ありがとうございます。 うーん、それしかないですかねぇ・・・ 空き容量を確認出来る、メソッドがあるなら そういったGByte、MByteとかに直してくれる ありがたいメソッドがあるかと思ったのですが・・・。 ああ、無常・・・

関連するQ&A

専門家に質問してみよう