如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )

5年以前  |  阅读数:908 次  |  编程语言:PHP 

语言之争由来已久,下面做一些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')); 

运行效果图:

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例