定時任務代碼
package com.sobey;
import java.io.File;
import java.util.Timer;
import java.util.TimerTask;
public class TimerTaskReadFile extends TimerTask {
// 表示任務是否啓動
private boolean isRunning = false;
private Timer mTimer = new Timer();
// 需要的屬性
private String filePathStr;
private int folderCount;
/**
* 構造方法
*
* @param filePathStr
*/
public TimerTaskReadFile(String filePathStr) {
this.filePathStr = filePathStr;
}
@Override
public void run() {
if (!(this.isRunning)) {
runMain();
}
}
private synchronized void runMain() {
this.isRunning = true;
File file = new File(filePathStr);
try {
long fileSize = getFileSize(file);
System.out.println("定時掃描傳人文件路徑的文件大小:" + fileSize);
System.out.println("文件夾下面的文件夾個數:" + getTotalFolderNum(file)
+ " 文件夾下面的文件個數:" + getTotalFileNum(file));
} catch (Exception e) {
e.printStackTrace();
} finally {
this.isRunning = false;
}
}
/**
* 獲取文件夾下面的文件個數和文件夾個數
* @param file
*/
private int getTotalFileNum(File file) {
int fileCount = 0;
File list[] = file.listFiles();
fileCount = list.length;
for (int i = 0; i < list.length; i++) {
if (list[i].isDirectory()) {
fileCount = fileCount + getTotalFileNum(list[i]);
fileCount--;
}
}
return fileCount;
}
/**
* 獲取文件夾下面的文件個數和文件夾個數
* @param file
*/
private int getTotalFolderNum(File file) {
File list[] = file.listFiles();
for (int i = 0; i < list.length; i++) {
if (list[i].isDirectory()) {
getTotalFolderNum(list[i]);
}
if (!list[i].isFile()) {
folderCount++;
}
}
return folderCount;
}
/**
* 讀取文件大小
* @param f
* @return
* @throws Exception
*/
public long getFileSize(File f) throws Exception// 取得文件夾大小
{
long size = 0;
File flist[] = f.listFiles();
for (int i = 0; i < flist.length; i++) {
if (flist[i].isDirectory()) {
size = size + getFileSize(flist[i]);
} else {
size = size + flist[i].length();
}
}
return size;
}
/**
* 銷燬方法
*/
public void destory() {
cancel();
this.mTimer.cancel();
}
public static void main(String[] args) {
String filePath = "D:\\webtv";
Timer mTimer = new Timer();
mTimer.scheduleAtFixedRate(new TimerTaskReadFile(filePath), 0, 10000);
}
}
注意:java定時任務沒有返回值,需要向定時任務裏面傳人蔘數,可以用定時任務類的構造函數。