爱程序网

对照实验(1)-批量清理系统临时文件

来源: 阅读:

语言之争由来已久,下面做一些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 <boostfilesystemoperations.hpp>#include <boostfilesystempath.hpp>#include <boostfilesystemconvenience.hpp>#include <boostalgorithmstring.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:%02dn", 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:%02dn", 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 datetimeimport os # 输入目录 e:tmppath = 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'));

运行效果图:

相关文章列表:
关于爱程序网 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助