Java獲取磁盤大小

我們在網(wǎng)上查找獲取磁盤大小的程序時,經(jīng)常會見到這樣的程序慨仿,windows是一套寫法(用java的api)灶体,linux是一套寫法(用的是模擬命令行運(yùn)行命令的方式獲取磁盤空間)其障。所以我們想當(dāng)然的以為鲫剿,windows的寫法在linux上行不通鳄逾。一般的寫法如下:

package com.example.demo.TypeTest;

import java.io.File;
import java.io.InputStreamReader;
import java.io.LineNumberReader;

/**
 *@Description: TODO
 *@Author: xushu
 *@Date: 2019-10-23 14:34
 **/
public class Test {


    /**
     * 執(zhí)行系統(tǒng)命令
     *
     * @param cmd 命令
     * @return 字符串結(jié)果
     */
    private static String runCommand(String cmd) {
        StringBuilder info = new StringBuilder();
        try {
            Process pos = Runtime.getRuntime().exec(cmd);
            pos.waitFor();
            InputStreamReader isr = new InputStreamReader(pos.getInputStream());
            LineNumberReader lnr = new LineNumberReader(isr);
            String line;
            while ((line = lnr.readLine()) != null) {
                info.append(line).append("\n");
            }
        } catch (Exception e) {
            info = new StringBuilder(e.toString());
        }
        return info.toString();
    }


    /**
     * 判斷系統(tǒng)是否為windows
     *
     * @return 是否
     */
    private static boolean isWindows() {
        return System.getProperties().getProperty("os.name").toUpperCase().contains("WINDOWS");
    }

    private static final String path = "D:/FileFromFtp";

    /**
     * 判斷是否需要刪除文件
     *
     * @return 磁盤使用率
     */
    public static boolean getWinDiskStoresInfo() {
        //系統(tǒng)為windows
        if(isWindows()) {
            String dirName = path.substring(0, path.indexOf("/") + 1);
            File win = new File(dirName);
            if (win.exists()) {
                long total = win.getTotalSpace();
                long usableSpace = win.getUsableSpace();
                if((double)(total - usableSpace) / total > 0.8){
                    return true;
                }
            }
        }else {
            //系統(tǒng)為Unix
            String ioCmdStr = "df -h /";
            String resultInfo = runCommand(ioCmdStr);
            String[] data = resultInfo.split(" +");
            double total = Double.parseDouble(data[10].replace("%", ""));
            if(total / 100 > 0.8){
                return true;
            }
        }

        return false;
    }



    public static void main(String[] args) throws NoSuchFieldException {
        getWinDiskStoresInfo();
    }
}

其實這樣好蛋疼,我也不知道這是什么瞎幾把寫法灵莲,好多人都不知道思考或者實驗一下雕凹,拿起代碼就是抄。Java在windows平臺上實現(xiàn)了一套文件系統(tǒng)政冻,為WinNTFileSystem枚抵,它支持獲取目標(biāo)卷的總?cè)萘亢褪S嗳萘俊D敲丛趌inux上明场,它同樣實現(xiàn)了一套文件系統(tǒng)汽摹,為UnixFileSystem,所以苦锨,不管什么平臺逼泣,只需要統(tǒng)一的寫法。所以寫法可以省略為:

package com.example.demo.TypeTest;

import java.io.File;

/**
 *@Description: TODO
 *@Author: xushu
 *@Date: 2019-10-24 10:59
 **/
public class BBB {

    public static void main(String[] args) {
        File win = new File("/");
        if (win.exists()) {
            long total = win.getTotalSpace();
            long usableSpace = win.getUsableSpace();
            System.out.println((double)(total - usableSpace) / total);
        }
    }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舟舒,一起剝皮案震驚了整個濱河市拉庶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秃励,老刑警劉巖氏仗,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異夺鲜,居然都是意外死亡皆尔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門币励,熙熙樓的掌柜王于貴愁眉苦臉地迎上來慷蠕,“玉大人,你說我怎么就攤上這事榄审∑雒牵” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵搁进,是天一觀的道長浪感。 經(jīng)常有香客問我,道長饼问,這世上最難降的妖魔是什么影兽? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮莱革,結(jié)果婚禮上峻堰,老公的妹妹穿的比我還像新娘讹开。我一直安慰自己,他們只是感情好捐名,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布旦万。 她就那樣靜靜地躺著,像睡著了一般镶蹋。 火紅的嫁衣襯著肌膚如雪成艘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天贺归,我揣著相機(jī)與錄音淆两,去河邊找鬼。 笑死拂酣,一個胖子當(dāng)著我的面吹牛秋冰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播婶熬,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼剑勾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了尸诽?” 一聲冷哼從身側(cè)響起甥材,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤盯另,失蹤者是張志新(化名)和其女友劉穎性含,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸳惯,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡商蕴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了芝发。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绪商。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖辅鲸,靈堂內(nèi)的尸體忽然破棺而出格郁,到底是詐尸還是另有隱情,我是刑警寧澤独悴,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布例书,位于F島的核電站,受9級特大地震影響刻炒,放射性物質(zhì)發(fā)生泄漏决采。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一坟奥、第九天 我趴在偏房一處隱蔽的房頂上張望树瞭。 院中可真熱鬧拇厢,春花似錦、人聲如沸晒喷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凉敲。三九已至邪媳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間荡陷,已是汗流浹背雨效。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留废赞,地道東北人徽龟。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像唉地,于是被迫代替她去往敵國和親据悔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容