批处理删除工具
作者:Vashon
时间:20160102
之前写本工具类的目的是为了删除地图切片过程产生的垃圾碎片。也可以移植到其他的应用。本批处理删除工具类是多线程下同时进行的,可提高删除速度,特别是文件上G时对比效果就明显了。______滴水石穿
声明:转载请注明出处,尊重原作。
一、准备需要执行的程序
本工具类代码如下:
删除文件类代码:
package com.ywx.utils.deletefile;
import java.io.File;
/**
* 开启多线程删除文件,提示速度.
* @author vashon
*
*/
public class FileDeleteThread extends Thread{
/**文件路径**/
private String path;
/**文件类型**/
private String type;
public String getPath() {
return this.path;
}
public void setPath(String path) {
this.path = path;
}
public String getType() {
return this.type;
}
public void setType(String type) {
this.type = type;
}
public FileDeleteThread(String path, String type) {
this.path = path;
this.type = type;
}
public void run() {
StartDelete(new File(this.path));
}
/**
* 开始删除.
* @param file
*/
public void StartDelete(File file) {
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File itemfile : files) {
StartDelete(itemfile);
}
}else if (file.getName().endsWith(this.type)) {
boolean flag = file.delete();
if (flag)
System.out.println(toString() + "删除文件【" + file.getAbsolutePath() + "】成功!");
}
}
}
校验文件类代码:
package com.ywx.utils.deletefile;
import java.io.File;
/**
* 文件有效性校验.
* @author vashon
*/
public class Check{
public boolean validatePath(String path) {
if (new File(path).exists()) {
return true;
}
return false;
}
/**
* 验证参数.
* @param info
* @return
*/
public boolean validateParam(String[] info) {
if (info.length == 2) {
return true;
}
return false;
}
/**
* 校验文件路径和参数.
* @param path 文件路径
* @param info 输入的参数
*/
public void checkPathAndParam(String path, String[] info) {
if (!validateParam(info)) {
System.out.println("您输入的参数个数不对!");
System.out.println("格式为:路径名 后缀名");
}
if (!validatePath(path))
System.out.println("该路径不存在!");
}
}
执行操作删除文件代码:
package com.ywx.utils.deletefile;
import java.io.File;
/**
* 执行删除操作.
* @author vashon
*/
public class Operate{
private String[] info;
public Operate(String[] info){
this.info = info;
new Check().checkPathAndParam(info[0], info);
newInitThread(new File(info[0]));
}
@Deprecated
public void initThread() {
File file = new File(this.info[0]);
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++)
new FileDeleteThread(this.info[0], this.info[1]).start();
}
/**
* 根据文件大小创建线程.
* @param file
*/
public void newInitThread(File file){
int n = 0;
if (file.isDirectory()) {
File[] flen = file.listFiles();
for (File itemf : flen) {
if (itemf.isDirectory()) {
newInitThread(itemf);
}else{
n++;
break;
}
}
for (int i = 0; i < n; i++){
new FileDeleteThread(this.info[0], this.info[1]).start();
}
}
}
}
入口函数代码:
package com.ywx.utils.deletefile;
public class TestMain{
public static void main(String[] args) {
new Operate(args);
}
}
二、打包成jar文件
1、在eclipse中选择你要导出的类或者package,这里是包;右击,选择Export子选项
2、在弹出的对话框中,选择java文件---选择JAR file
3、到处jar文件到指定目录
4、我这里是导出到桌面。
三、编写bat命令
代码都准备好后,接下来看看bat命令了;把需要执行的参数放在bat里,双击运行就能执行程序删除垃圾碎片了。
bat正文如下:
java -cp .;deletefile.jar com.ywx.utils.deletefile.TestMain d:\P_256_CD35485BFIX solid
pause;
四、实战
做好的工具是这样子的
运行我们的工具执行结果如下:
最后等待的结果如下:
源码下载:批处理工具
附言:这是2014年前写的程序,想想都2016了,拿出来改改更新下感觉还是不错的!