如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
程序员文章站
2023-11-22 14:52:22
语言之争由来已久,下面做一些io实验(遍历9g多的文件,批量删除),尽量用事实来比较谁优谁劣。操作系统:win7 64 位,文件包大小:9.68g。
一、语言:c#...
语言之争由来已久,下面做一些io实验(遍历9g多的文件,批量删除),尽量用事实来比较谁优谁劣。操作系统:win7 64 位,文件包大小:9.68g。
一、语言:c#
开发环境:vs 2013
代码总行数:43行
耗时:7秒
代码:
using system; using system.collections.generic; using system.io; using system.linq; using system.text; using system.threading.tasks; namespace batchdelete { class program { static void main(string[] args) { // 输入目录 e:\tmp string path; console.writeline("输入要清理的目录:"); path = console.readline(); // 开始计时 console.writeline("开始计时:"+datetime.now.tostring("hh:mm:ss")); // 先遍历匹配查找再循环删除 if (directory.exists(path)) { console.write("正在删除"); foreach (string filename in directory.getfilesystementries(path)) { if (file.exists(filename) && filename.contains("cachegrind.out")) { file.delete(filename); } } console.writeline(""); } else { console.writeline("该目录不存在!"); } // 计时结束 console.writeline("结束计时:" + datetime.now.tostring("hh:mm:ss")); console.readkey(); } } }
运行效果图:
二、语言:c/c++
开发环境:vs 2013
代码总行数:50行
耗时:36秒
代码:
#include <iostream> #include <string> #include <windows.h> #include <boost\filesystem\operations.hpp> #include <boost\filesystem\path.hpp> #include <boost\filesystem\convenience.hpp> #include <boost\algorithm\string.hpp> using namespace std; int main(int argc, char * argv[]) { // 输入目录 e:\tmp string strpath; cout << "输入要清理的目录:" << endl; getline(cin, strpath); // 开始计时 systemtime sys_time; //声明变量 getlocaltime(&sys_time); //将变量值设置为本地时间 printf("开始计时:%02d:%02d:%02d\n", sys_time.whour,sys_time.wminute,sys_time.wsecond); // 先遍历匹配查找再循环删除 namespace fs = boost::filesystem; fs::path full_path(fs::initial_path()); full_path = fs::system_complete(fs::path(strpath, fs::native)); if (fs::exists(full_path)) { cout << "正在删除" ; fs::directory_iterator item_begin(full_path); fs::directory_iterator item_end; for (; item_begin != item_end; item_begin++) { if (!fs::is_directory(*item_begin)) { if (fs::exists(item_begin->path()) && boost::contains(item_begin->path().string(), "cachegrind.out")) { fs::remove(item_begin->path()); } } } cout << "" << endl; } else { cout << "该目录不存在!" << endl; } // 计时结束 getlocaltime(&sys_time); printf("计时结束:%02d:%02d:%02d\n", sys_time.whour, sys_time.wminute, sys_time.wsecond); system("pause"); return 0; }
运行效果图:
三、语言:php
开发环境:phpstorm
代码总行数:32行
耗时:13秒
代码:
<?php /** * created by phpstorm. * user: administrator * date: 16-1-29 * time: 上午9:31 */ date_default_timezone_set('prc'); //输入目录 e:\tmp $path = 'e:\tmp'; //开始计时 echo date("h:i:s",time()) . '<br/>'; //先遍历匹配查找再循环删除 if(is_dir($path)) { echo "正在删除"; $mydir = dir($path); while($file = $mydir->read()) { if(file_exists("$path/$file") && strpos($file, 'cachegrind.out') === 0) { unlink("$path/$file"); } } echo '<br/>'; } else { echo "该目录不存在!" . '<br/>'; } //计时结束 echo date("h:i:s",time()) . '<br/>';
运行效果图:
四、语言:java
开发环境:eclipse
代码总行数:43行
耗时:10秒
代码:
package com.yejing; import java.io.file; import java.text.simpledateformat; import java.util.date; import java.util.scanner; public class test { public static void main(string[] args) { scanner s = new scanner(system.in); // 输入目录 e:\tmp string path = null; system.out.println("输入要清理的目录:"); path = s.next(); // 开始计时 date nowtime=new date(); simpledateformat time=new simpledateformat("hh:mm:ss"); system.out.println("开始计时:"+ time.format(nowtime)); // 先遍历匹配查找再循环删除 file dir = new file(path); if(dir.exists()){ system.out.print("正在删除"); file[] fs = dir.listfiles(); for(int i=0;i<fs.length;i++){ if(!fs[i].isdirectory()){ if(fs[i].isfile() && fs[i].exists() && fs[i].getname().contains("cachegrind.out")) { fs[i].delete(); } } } system.out.println(""); }else{ system.out.println("该目录不存在!"); } // 计时结束 nowtime=new date(); system.out.println("开始计时:"+ time.format(nowtime)); } }
运行效果图:
五、语言:python 3.3.5
开发环境:idle
代码总行数:20行
耗时:10秒
代码:
# -*- coding: utf-8 -*- import datetime import os # 输入目录 e:\tmp path = input("输入要清理的目录:\n"); # 开始计时 print("开始计时:",datetime.datetime.now().strftime('%h:%m:%s')); # 先遍历匹配查找再循环删除 if(os.path.exists(path)): print("正在删除"); for parent,dirnames,filenames in os.walk(path): for filename in filenames: targetfile = os.path.join(parent,filename) if (os.path.isfile(targetfile) and "cachegrind.out" in targetfile): os.remove(targetfile)
else:
print("该目录不存在!"); # 计时结束 print("结束计时:",datetime.datetime.now().strftime('%h:%m:%s'));
运行效果图: