广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java代码实现C盘文件统计工具
  • 131
分享到

java代码实现C盘文件统计工具

2024-04-02 19:04:59 131人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

 概述 工作电脑用了3年多了,100G的C盘也快吃不消了,每次打开看到C盘红了,总要用清理工具清理一下子. 不知道怎么最近清理工具清理了也没有什么效果,把temp下面的文

 概述

在这里插入图片描述

工作电脑用了3年多了,100G的C盘也快吃不消了,每次打开看到C盘红了,总要用清理工具清理一下子.

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

总是有一种冲动要去处理掉,已经影响工作了.乘着星期天写个工具,分析一下C盘的文件,看看那些是最近才增加的,能不能手动删除掉.

版本介绍


com
  └─sedaier
      └─calcdir
          ├─service
          │  │  IDirSizeCalc.java
          │  │
          │  └─impl
          │         DirSizeCalcByForkJoinPoolImpl.java
          │
          ├─test
          │      Test.java
          │
          └─tool
                 OutputFileUtils.java //日志输出工具类

源码

DirSizeCalcByForkJoinPoolImpl.java


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


package com.sedaier.calcdir.service;

import java.io.File;

public interface IDirSizeCalc {
	long getSize(final File file, final File log);
}

Test.java


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


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盘文件统计工具内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: java代码实现C盘文件统计工具

本文链接: https://www.lsjlt.com/news/130236.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java代码实现C盘文件统计工具
     概述 工作电脑用了3年多了,100G的C盘也快吃不消了,每次打开看到C盘红了,总要用清理工具清理一下子. 不知道怎么最近清理工具清理了也没有什么效果,把temp下面的文...
    99+
    2022-11-12
  • 使用java怎么实现一个C盘文件统计工具
    今天就跟大家聊聊有关使用java怎么实现一个C盘文件统计工具,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。版本介绍Maven-3.3.9JDK1.8 目录结构com &nb...
    99+
    2023-06-20
  • Python实现代码统计工具(终极篇)
    本文对于先前系列文章中实现的C/Python代码统计工具(CPLineCounter),通过C扩展接口重写核心算法加以优化,并与网上常见的统计工具做对比。实测表明,CPLineCounter在统计精度和性能...
    99+
    2022-06-04
    代码 工具 Python
  • Java实现截图小工具的完整代码
    目录写在前面效果展示代码展示项目结构设计思路项目测试写在前面 今天利用Java的图形用户界面GUI技术写了一个电脑截图小工具。本程序代码简单,涉及到异常处理,事件处理,图形用户界面等...
    99+
    2022-11-13
  • Shell脚本实现的基于SVN的代码提交量统计工具
    最近没啥事,就用bash写了一个基于svn的代码统计小工具。 可以指定统计的目录,默认递归统计子目录。 目前还没有屏蔽指定目录的功能。哈 代码比较粗糙。不过先晒出来。 #!/bin/bash - #...
    99+
    2022-06-04
    脚本 代码 工具
  • Java实现屏幕截图工具的代码分享
    目录效果展示程序结构核心代码效果展示 程序运行后的截图: 先测试一下功能: 截图过程对界面的捕捉: 双击保存后的显示界面: 后续的步骤就自己去尝试吧,这里给出了简单的测试过程。...
    99+
    2022-11-13
  • vbs如何实现文本文件编码查询工具
    这篇文章主要为大家展示了“vbs如何实现文本文件编码查询工具”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vbs如何实现文本文件编码查询工具”这篇文章吧。代码如下:'QueryCode....
    99+
    2023-06-08
  • 如何实现Shell脚本基于SVN的代码提交量统计工具
    这篇文章主要讲解了“如何实现Shell脚本基于SVN的代码提交量统计工具”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现Shell脚本基于SVN的代码提交量统计工具”吧!#!/bin/...
    99+
    2023-06-09
  • Java实现文件检索系统的示例代码
    示例代码 package Demo; import java.io.File; import java.io.FilenameFilter; import java.util.Sc...
    99+
    2022-11-13
  • java程序代码与文本对比实用工具简介
    1.WinMerge WinMerge是一款运行于Windows系统下的文件比较和合并工具 https://winmerge.org/downloads/?lang=en ...
    99+
    2022-11-12
  • C语言实现时间处理工具的示例代码
    目录c语言-时间处理工具头文件功能实现c语言-时间处理工具 头文件 #ifndef STUDY_TIME_UTIL_H #define STUDY_TIME_UTIL_H lon...
    99+
    2022-11-13
  • 基于Python实现文章信息统计的小工具
    目录前言程序主程序 main.py爬虫模块 spider.py持久化模块 store.py执行结果前言 博客园在个人首页有一个简单的博客数据统计,以博客园官方的首页为例: 但是这些...
    99+
    2023-02-14
    Python文章信息统计工具 Python信息统计工具 Python信息统计
  • python实现mp3文件播放的具体实现代码
    本文使用pygame实现播放mp3,文中用到pygame及mutagen库,安装: pip install pygamepip install mutagen 以下代码实现mp3播放...
    99+
    2023-05-18
    python播放mp3文件代码 python 播放mp3 python如何播放mp3
  • Java实现屏幕截图工具的代码怎么写
    这篇文章主要讲解了“Java实现屏幕截图工具的代码怎么写”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java实现屏幕截图工具的代码怎么写”吧!效果展示程序运行后的截图:先测试一下功能:截图...
    99+
    2023-06-30
  • Java实现解析JSON大文件JsonReader工具详解
    目录一,使用背景二,JsonReader的使用一,使用背景 之前遇到一个需求,是需要将一个json文件解析存储到数据库中。一开始测试的时候,json文件的大小都在几兆以内,所以直接将...
    99+
    2023-01-11
    Java JsonReader Java解析JSON大文件
  • Shell脚本实现C语言代码行数统计
    写了一个比较粗糙的C语言代码行数统计脚本,目前还有些bug,而且效率也不高。脚本主要就是去除大部分的注释后统计行数,相当于做了一部分预处理的工作。下面是代码: #!/bin/bash filenam...
    99+
    2022-06-04
    脚本 行数 语言
  • C/C++ QT实现解析JSON文件的示例代码
    JSON是一种轻量级的数据交换格式,它是基于ECMAScript的一个子集,使用完全独立于编程语言的文本格式来存储和表示数据,简洁清晰的的层次结构使得JSON成为理想的数据交换语言,...
    99+
    2022-11-12
  • Java文件操作类 File实现代码
    1.概述  对于文件系统的访问是每个语言必须的,java提供了File类来完成对文件或者目录的创建,重命名,删除,文件列表的操作以及判读是否存在。2.对于文件/目录的操作  操作内容包括:    1:创建对象。    2:判断是否是目录/文...
    99+
    2023-05-31
    java 操作类 file
  • C++ 递归遍历文件并计算MD5的实例代码
    递归遍历文件夹,对比文件md5 首先,需要引用 md5 的相关代码,参考这篇文章,防止链接内容被删除,这里再记录一次: md5.h #ifndef MD5_H #d...
    99+
    2022-11-12
  • C语言实现职工工资管理系统的示例代码
    目录一、需求分析二、项目环境2.1、项目创建过程2.2、向项目添加头文件与源文件三、职工工资管理系统模块功能3.1、系统总体设计框图3.2、系统模块总体设计3.3、设计系统菜单功能3...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作