いつもお世話になっております。
本日は空き容量を確認してその後に文字列で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件)
- 最新から表示
- 回答順に表示
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 ();
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- 教育学 エクセルで小数点以下を四捨五入について教えてください。 2 2023/04/05 17:33
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/06/15 14:11
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 10:07
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
- Java この世で連日正規表現について質問している阿呆は私くらいしかいないでしょう。本当にお世話になっています 2 2022/05/22 11:59
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Excel(エクセル) エクセルのセルの書式設定・ユーザー定義の条件設定について 1 2022/08/17 21:56
- 英語 "this day"が当日か今日を表すのかの使い分け方等について 5 2023/08/08 14:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
JAVAでエラーがでる。
-
テキストファイルから空白行をよむ
-
テキストファイルにおいて任意...
-
equalsの逆
-
Java int sum = 0は必要ですか?
-
csv出力について
-
Class.forNameでエラーになる
-
Javaの質問です。テキストファ...
-
BufferedReader.readline()で読...
-
javaのfor文が機能してないみた...
-
[JAVA]エラーが解決できません。
-
BufferedReaderでのエラー
-
Javaのカウント方法について
-
Java 読み込んだテキストファイ...
-
FileクラスのcanRead/canWrite...
-
九九を横に表示する。
-
Javaのカウント方法について
-
IF関数でEmpty値を設定する方法。
-
ダブルクォーテーションのrepla...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
equalsの逆
-
csv出力について
-
九九を横に表示する。
-
InputStream.read()でタイムア...
-
テキストファイルから空白行をよむ
-
Java int sum = 0は必要ですか?
-
javaのfor文が機能してないみた...
-
BufferedReaderでのエラー
-
Javaの質問です。テキストファ...
-
以下のJAVAプログラムでご質問...
-
Class.forNameでエラーになる
-
ソケットを使ったサーバとクラ...
-
テキストファイルにおいて任意...
-
テキストファイルの任意の文字...
-
JAVAでエラーがでる。
-
Inputstreamについて
-
ObjectInputStreamとStreamCorr...
-
Windowsでの標準入力の終了の仕方
-
[JAVA]エラーが解決できません。
おすすめ情報