Java清理临时目录文件Demo(一)

时间:2022-08-06 08:55:20
    /**
* 删除单个文件
*
* @param sPath
* 被删除文件的文件名
* @return 单个文件删除成功返回true,否则返回false
*/
public static boolean deleteFile(String sPath) {
boolean flag = false;
File file = new File(sPath);
// 路径为文件且不为空则进行删除
if (file.isFile() && file.exists()) {
file.delete();
flag = true;
}
return flag;
} /**
* @description 扫描指定路径文件夹下所有文件
* 得到每个文件的创建时间
* 删除时间在规定时间之前的所有文件deleteFile(array[i].toString());
*
*/
private static void getOtherFile(String path) { File file = new File(path); File[] array = file.listFiles(); for (int i = 0; i < array.length; i++) { if (array[i].isFile()) { SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); Date newtime = null; try {
newtime = sf.parse(getFileCreateTime(array[i]).replace("/",
"-"));
} catch (ParseException e) {
e.printStackTrace();
} sf.format(newtime);
String currentTime = DateUtil.getCurrentDateTime();
String createRealTime = DateUtil.getCurrentDateBeforeDate(
currentTime, daynum); // java 比较时间大小
String s1 = sf.format(newtime);//硬盘上文件创建时间
String s2 = createRealTime;//指定日期(删除指定日期之前的文件)
java.text.DateFormat df = new java.text.SimpleDateFormat(
"yyyy-MM-dd");
java.util.Calendar c1 = java.util.Calendar.getInstance();
java.util.Calendar c2 = java.util.Calendar.getInstance();
try {
c1.setTime(df.parse(s1));
c2.setTime(df.parse(s2));
} catch (java.text.ParseException e) {
System.err.println("格式不正确");
}
int result = c1.compareTo(c2);
if (result == 0) {
// System.out.println("硬盘上文件创建时间 相等 指定日期");
} else if (result < 0) {
// System.out.println("硬盘上文件创建时间 小于 指定日期(硬盘文件日期在指定日期)");
// 当创建时间小于当前规定时间之前时,对文件进行删除操作。
deleteFile(array[i].toString());
} else {
// System.out.println("硬盘上文件创建时间 大于 指定日期");
//deleteFile(array[i].toString());
} } else if (array[i].isDirectory()) { getOtherFile(array[i].getPath()); }
}
} /**
* 获取文件创建时间
*
*/ public static String getFileCreateTime(File filePath) {
File file = filePath; try { Process ls_proc = Runtime.getRuntime().exec( "cmd.exe /c dir " + file.getAbsolutePath() + " /tc");
BufferedReader br = new BufferedReader(new InputStreamReader(
ls_proc.getInputStream())); for (int i = 0; i < 5; i++) { br.readLine(); } String stuff = br.readLine(); StringTokenizer st = new StringTokenizer(stuff); String dateC = st.nextToken() + " "; String time = st.nextToken(); String datetime = dateC.concat(time); br.close(); return datetime; } catch (Exception e) { return null;
} }