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

 更新时间:2016年02月01日 16:38:18   作者:文艺青年.茶  
这篇文章主要介绍了如何批量清理系统临时文件(C# C/C++ php python java )的相关资料,需要的朋友可以参考下

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

运行效果图:

相关文章

  • Yii框架应用组件用法实例分析

    Yii框架应用组件用法实例分析

    这篇文章主要介绍了Yii框架应用组件用法,结合实例形式分析了Yii应用组件基本功能、定义、使用方法及操作注意事项,需要的朋友可以参考下
    2020-05-05
  • PHP 实现类似js中alert() 提示框

    PHP 实现类似js中alert() 提示框

    这篇文章主要介绍了PHP 实现类似js中alert() 提示框功能,非常的实用,这里推荐给大家,有需要的小伙伴来参考下,希望大家能喜欢。
    2015-03-03
  • CakePHP框架Model函数定义方法示例

    CakePHP框架Model函数定义方法示例

    这篇文章主要介绍了CakePHP框架Model函数定义方法,结合具体查询函数示例分析了CakePHP框架Model函数的定义方法,需要的朋友可以参考下
    2017-08-08
  • 详解PHP字符串替换str_replace()函数四种用法

    详解PHP字符串替换str_replace()函数四种用法

    str_replace() 函数以其他字符替换字符串中的一些字符(区分大小写)。本文重点给大家介绍PHP字符串替换str_replace()函数四种用法,感兴趣的朋友一起看看吧
    2017-10-10
  • 在Laravel 的 Blade 模版中实现定义变量

    在Laravel 的 Blade 模版中实现定义变量

    今天小编就为大家分享一篇在Laravel 的 Blade 模版中实现定义变量,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • 解密ThinkPHP3.1.2版本之模块和操作映射

    解密ThinkPHP3.1.2版本之模块和操作映射

    这篇文章主要介绍了ThinkPHP3.1.2模块和操作映射,需要的朋友可以参考下
    2014-06-06
  • 用php守护另一个php进程的例子

    用php守护另一个php进程的例子

    这篇文章主要介绍了用php守护另一个php进程的例子,本文直接给出实现代码,需要的朋友可以参考下
    2015-02-02
  • PHP 验证登陆类分享

    PHP 验证登陆类分享

    本文给大家介绍的是用php实现的用户登录与验证的一段代码,没有把登录和数据库查询分开,有需要的朋友,可以参考学习下
    2015-03-03
  • 如何让CI框架支持service层

    如何让CI框架支持service层

    本文主要介绍了在controller和model中加一个业务层service,由它来负责业务逻辑,封装好的调用接口可以被controller复用,提高了通用的业务逻辑的复用性,设计到具体业务实现会调用Model的接口。
    2014-10-10
  • ThinkPHP3.1新特性之G方法的使用

    ThinkPHP3.1新特性之G方法的使用

    ThinkPHP3.1的G方法的作用包括标记位置和区间统计两个功能。这篇文章主要介绍了ThinkPHP3.1版G方法的使用,需要的朋友可以参考下
    2014-06-06

最新评论