プロが教えるわが家の防犯対策術!

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

本日は空き容量を確認してその後に文字列で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型の数字をどのようにすればいいのか
教えて頂ければと思います。

宜しくお願い致します。

A 回答 (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 ();


}
}
    • good
    • 0

普通に割り算したらどお?


ついでに言うと1000で割っちゃダメよ?
割るなら1024ね。
    • good
    • 0
この回答へのお礼

askaaskaさん
ご返信ありがとうございます。

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

ああ、無常・・・

お礼日時:2010/07/07 16:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!