C#统计目录中文件MD5值

1. [代码]统计目录中文件MD5值

using System.IO;
using System.Security.Cryptography;
using System.Collections;
using System.Windows.Forms;
 IDataObject iData = Clipboard.GetDataObject();
   if (iData.GetDataPresent(DataFormats.Text))
   {
string filepath=(string)iData.GetData(DataFormats.Text);
StringBuilder sbMD5= new StringBuilder(1024);
string [email protected]"C:\tmp";
DirectoryInfo dir = new DirectoryInfo((filepath.LastIndexOf(Path.DirectorySeparatorChar) == filepath.Length - 1) ? filepath : filepath + Path.DirectorySeparatorChar);
FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos());
while (Folders.Count > 0)
{
    FileSystemInfo atom = Folders.Dequeue();
    FileInfo f = atom as FileInfo;
    if (f == null)
    {
        DirectoryInfo d = atom as DirectoryInfo;
        foreach (FileSystemInfo fi in d.GetFileSystemInfos())
            Folders.Enqueue(fi);
    }
    else
    {
        FileStream fs = new FileStream(f.FullName,FileMode.Open,FileAccess.Read);
        MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
        byte [] md5byte = md5.ComputeHash(fs);
        int i,j;
        StringBuilder sb = new StringBuilder(16);
        foreach (byte b in md5byte)
        {
            i = Convert.ToInt32(b);
           j = i >> 4;
           sb.Append(Convert.ToString(j,16));
           j = ((i << 4) & 0x00ff) >> 4;
           sb.Append(Convert.ToString(j,16));
        }
        sbMD5.Append(f.FullName);
        sbMD5.Append("\t");
        sbMD5.Append(sb.ToString());
        sbMD5.Append("\r\n");
    }
}
Clipboard.SetText(sbMD5.ToString());
   }
   else
    MessageBox.Show("目前剪贴板中数据不可转换为文本","错误");
2. [代码][C#]代码     
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Security.Cryptography;
using System.Collections;
using System.Windows.Forms;
 http://www.huiyi8.com/gongzuozongjie/?
static void listFiles(string rootDirectory,string searchPattern)
{工作总结
var files=from fileName in Directory.GetFiles(
rootDirectory,searchPattern)
select new
{
Name=fileName,
LastWriteTime=File.GetLastWriteTime(fileName)
};
StringBuilder sbMD5= new StringBuilder(1024);
foreach(var file in files)
{
        FileStream fs = new FileStream(file.Name,FileMode.Open,FileAccess.Read);
        MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
        byte [] md5byte = md5.ComputeHash(fs);
        StringBuilder sb = new StringBuilder(16);
        foreach (byte b in md5byte)
        {
            int i = Convert.ToInt32(b);
           int j = i >> 4;
           sb.Append(Convert.ToString(j,16));
           j = ((i << 4) & 0x00ff) >> 4;
           sb.Append(Convert.ToString(j,16));
        }
        sbMD5.Append(f.Name);
        sbMD5.Append("\t");
        sbMD5.Append(f.LastWriteTime);
        sbMD5.Append("\t");
        sbMD5.Append(sb.ToString());
        sbMD5.Append("\r\n");
}
Clipboard.SetText(sbMD5.ToString());
}
 
 
 IDataObject iData = Clipboard.GetDataObject();
   if (iData.GetDataPresent(DataFormats.Text))
   {
string filepath=(string)iData.GetData(DataFormats.Text);
listFiles(filepath,"*");
}

时间: 2024-10-21 18:52:57

C#统计目录中文件MD5值的相关文章

遍历目录删除指定MD5值的文件

工作需要实现一个查找出指定目录下md5值与excel表格中md5值相同的文件然后删掉的功能.我是这样做的:首先遍历指定目录,计算该目录下所有文件的md5值,以文件路径为key,md5值为value保存到一个字典中:然后读取excel表格中的md5,查看字典中的value是否包含该md5,如果包含,则删除对应文件.以下是具体实现代码: 1 #coding:utf-8 2 3 from hashlib import md5 4 import os,time,sys 5 import xlrd 6 i

计算目录下的md5值,用于文件被篡改后对比

计算/etc目录下的md5值,用于文件被篡改后对比,命令如下: find /etc/ -maxdepth 1 -type f | xargs -n1 md5sum> /root/etc_sum-$(date +%F).log 同样的道理, 我们可以将/usr/bin  /usr/sbin/ /usr/local/bin /root/bin 等等重要的目录下面的文件校验和都计算一遍,这样的话定期执行一下该命令,生成一份最新的校验和,通过diff命令将生成的log文件和原始的md5sum.log比较

MD5的好处及linux中文件MD5校验和的应用

MD5算法简介: MD5全称是报文摘要算法(Message-Digest Algorithm5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的"指纹"(或称"报文摘要"),不同的文件产生相同的报文摘要的可能性是非常非常之小的. Message Digest Algorithm MD5为计算机安全领域广泛使用的一种散列函数,MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.它是用复杂的数学算法求得的一个12

MD5工具类,提供字符串MD5加密、文件MD5值获取(校验)功能

MD5工具类,提供字符串MD5加密(校验).文件MD5值获取(校验)功能 : package com.yzu.utils; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.security.MessageDigest; impor

QT 获取文件MD5值

[cpp] view plain copy /* 方法1 */ QFile theFile(fileNamePath); theFile.open(QIODevice::ReadOnly); QByteArray ba = QCryptographicHash::hash(theFile.readAll(), QCryptographicHash::Md5); theFile.close(); qDebug() << ba.toHex().constData(); [cpp] view pla

PHP 统计数组中所有的值出现的次数 array_count_values 函数

array_count_values() 函数用于统计数组中所有的值出现的次数. array_count_values() PHP array_count_values() 函数用于统计数组中所有的值出现的次数,返回一个数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数. 语法: 1 array array_count_values( array array ) 例子: 1 2 3 4 <?php $arr_a = array("a", "b", 

JAVA中获取文件MD5值的方法

1 DigestUtils.md5Hex(new FileInputStream(path)); 如果你只需要使用标准的MD5,其实一行代码就够了,JAVA自带的commons-codec包就提供了获取16进制MD5值的方法.其底层实现上,也是分多次将一个文件读入,类似方法三.所以性能上也不错. 总结:其实方法都是类似的,推荐使用这个方法,简洁且性能不错,当然,如果要做一些调整什么的,可以根据自己的需求进行方法的选择. PS:其实还有一个重点,就是如何知道自己生成的MD5值是否正确呢? 方法很多

文件md5值是否正确的api接口开发

利用web.py框架,判断服务器端的某文件的md5值是否正确.返回json格式数据,代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- # Author:     feng minqiang  <[email protected]> # Maintainer:  feng minqiang  <[email protected]> import web import hashlib import os,sys #简单的测试一个字符

Python递归列出目录中文件脚本及其匿名函数

1.递归列出目录里的文件的脚本举例 列出目录中的文件可以通过下面方法:os.listdir() In [1]: import os In [4]: os.listdir('/root') Out[4]: ['.tcshrc', '.bash_history', '.bashrc', 'ENV', '.cache', '.config', '.cshrc', '.bash_logout', 'python', '.ssh', 'shell', '.bash_profile', '.ipython'