激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - Java教程 - java代碼實現C盤文件統計工具

java代碼實現C盤文件統計工具

2021-10-06 01:12zhangxiaojun34901 Java教程

今天周末,給大家分享基于java代碼實現C盤文件統計工具,在這小編使用的版本是Maven-3.9.9,jdk1.8,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧

 概述

java代碼實現C盤文件統計工具

工作電腦用了3年多了,100G的C盤也快吃不消了,每次打開看到C盤紅了,總要用清理工具清理一下子.

不知道怎么最近清理工具清理了也沒有什么效果,把temp下面的文件刪除,沒什么大作用.

總是有一種沖動要去處理掉,已經影響工作了.乘著星期天寫個工具,分析一下C盤的文件,看看那些是最近才增加的,能不能手動刪除掉.

版本介紹

  • Maven-3.3.9
  • JDK1.8 目錄結構
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
com
  └─sedaier
      └─calcdir
          ├─service
          │  │  IDirSizeCalc.java
          │  │
          │  └─impl
          │         DirSizeCalcByForkJoinPoolImpl.java
          
          ├─test
          │      Test.java
          
          └─tool
                 OutputFileUtils.java //日志輸出工具類

源碼

DirSizeCalcByForkJoinPoolImpl.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package com.sedaier.calcdir.service.impl;
 
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.ForkJoinTask;
import java.util.concurrent.RecursiveTask;
 
import com.sedaier.calcdir.service.IDirSizeCalc;
import com.sedaier.calcdir.tool.OutputFileUtils;
 
public class DirSizeCalcByForkJoinPoolImpl implements IDirSizeCalc {
    
    @Override
    public long getSize(final File file, final File log) {
        ForkJoinPool forkJoinPool = new ForkJoinPool();
        return forkJoinPool.invoke(new FileSizeFinder(file, log));
    }
 
    @SuppressWarnings("serial")
    private static class FileSizeFinder extends RecursiveTask<Long> {
        final File file;
        final File log;
 
        FileSizeFinder(final File theFile, final File theLog) {
            file = theFile;
            log = theLog;
        }
 
        @Override
        public Long compute() {
            long size = 0;
            if (file.isFile()) {
                size = file.length();
                OutputFileUtils.write(log, file);
            } else {
                final File[] children = file.listFiles();
                if (children != null) {
                    List<ForkJoinTask<Long>> tasks = new ArrayList<ForkJoinTask<Long>>();
                    for (final File child : children) {
                        if (child.isFile()) {
                            size += child.length();
                            OutputFileUtils.write(log, child);
                        } else {
                            tasks.add(new FileSizeFinder(child, log));
                        }
                    }
                    for (final ForkJoinTask<Long> task : invokeAll(tasks)) {
                        size += task.join();
                    }
                }
            }
            return size;
        }
    }
}

IDirSizeCalc.java

?
1
2
3
4
5
6
7
package com.sedaier.calcdir.service;
 
import java.io.File;
 
public interface IDirSizeCalc {
    long getSize(final File file, final File log);
}

Test.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.sedaier.calcdir.test;
 
import java.io.File;
 
import com.sedaier.calcdir.service.IDirSizeCalc;
import com.sedaier.calcdir.service.impl.DirSizeCalcByForkJoinPoolImpl;
import com.sedaier.calcdir.tool.OutputFileUtils;
 
public class Test {
    public static void main(final String[] args) {
        String dirPath = "C:\\Windows";
        String log = "C:\\Users\\Administrator\\Desktop\\log.log";
        File file = new File(dirPath);
        File logFile = new File(log);
 
        calcDirSize(file, logFile, new DirSizeCalcByForkJoinPoolImpl());
        OutputFileUtils.distory();
    }
 
    private static void calcDirSize(File file, File log, IDirSizeCalc dirSizeCalc) {
        dirSizeCalc.getSize(file, log);
    }
}

OutputFileUtils.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package com.sedaier.calcdir.tool;
 
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Calendar;
 
public class OutputFileUtils {
 
    public static int time = 0;
    //buffer刷信息時間
    public static int overtime = 100;
    //避免重復初始化
    public static boolean flag = false;
    public static FileWriter out = null;
    public static BufferedWriter bw = null;
    //昨天
    public static long day;
    //用于計算日期 -1 當前日期往前一天,-2 當前日期往前兩天
    public static int amount = -1;
    
    static {
        //初始化日期
        Calendar instance = Calendar.getInstance();
        instance.add(Calendar.DAY_OF_MONTH, amount);
        day = instance.getTimeInMillis();
    }
    
    public static void write(final File log, File file) {
        
        try {
            if (!flag && !log.exists()) {
                log.createNewFile();
                flag = true;
            }
            if(out == null || bw == null) {
                out = new FileWriter (log);
                bw = new BufferedWriter(out);
            }
            long lastModified = file.lastModified();
            if(lastModified > day) {
                bw.write(String.format("%s===大小=%d===時間=%tF",file.getAbsolutePath(),file.length()/1000000,lastModified));
                bw.newLine();
            }
            time++;
            if(time > overtime) {
                bw.flush();
                time = 0 ;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    public static void distory() {
        try {
            bw.close();
            out.close();
            System.out.println("關閉成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

源碼下載地址

https://gitee.com/lanseyouyu/sediaer-calcdir.git

到此這篇關于java代碼實現C盤文件統計工具的文章就介紹到這了,更多相關java c盤文件統計工具內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/qq125281823/article/details/118651166

延伸 · 閱讀

精彩推薦
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7472021-02-04
530
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 成人亚洲一区二区 | 亚洲免费资源 | 亚洲一区二区三区视频免费 | 国产精品视频一区二区三区综合 | 国产69精品久久99不卡免费版 | 午夜精品毛片 | 美女羞羞视频网站 | 国产精品999在线观看 | 一区二区三区国产视频 | 久久综合综合 | 亚洲一区二区三区视频免费 | 3344永久免费 | 国产免费一区二区三区最新不卡 | 鲁丝一区二区二区四区 | 欧洲精品久久久 | 日韩精品中文字幕一区二区 | av不卡免费观看 | 激情av在线 | 国产中出视频 | 久久99精品久久久久久园产越南 | 午夜爽爽爽男女免费观看hd | 一区二区久久精品66国产精品 | 孕妇体内谢精满日本电影 | 青久草视频 | 精品国产一区二区三区久久久 | 中文字幕在线观看网址 | av电影免费在线 | 一区二区三区欧美在线观看 | 9191久久久久视频 | 中文字幕在线观看亚洲 | 狠狠干五月天 | 宅男噜噜噜66国产免费观看 | 99精品欧美一区二区 | 久久蜜桃精品一区二区三区综合网 | 91久久久久久久久久久久久 | 91av在线免费视频 | 91午夜视频 | 欧美成人一区免费视频 | 一本色道久久综合亚洲精品小说 | 国产乱一区二区三区视频 | 国产喷白浆10p |