1.  
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Net.Mail;
  7. using System.Net;
  8. using System.Threading;
  9. using System.IO;
  10. using System.Security.Cryptography;
  11.  
  12. namespace ConsoleApp348
  13. {
  14. class Program
  15. {
  16. static List<String> MD5List = new List<string>();
  17. static string logFullPath = Directory.GetCurrentDirectory() + "\\" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
  18. static void Main(string[] args)
  19. {
  20. string dir = @"C:\Users\Fred\Downloads";
  21. GetFiles(dir);
  22. foreach(var md5 in MD5List)
  23. {
  24. Console.WriteLine(md5);
  25. }
  26. Console.ReadLine();
  27. }
  28.  
  29. static void LogMessage(string msg)
  30. {
  31. lock(logFullPath)
  32. {
  33. using (StreamWriter logWriterStream = new StreamWriter(logFullPath, true, UTF8Encoding.UTF8))
  34. {
  35. logWriterStream.WriteLine($"Log message :{msg},now is {DateTime.Now.ToString("yyyyMMddHHmmssffff")}");
  36. }
  37. }
  38. }
  39.  
  40. static void GetFiles(string dir)
  41. {
  42. string[] allFiles = Directory.GetFiles(dir, "*", SearchOption.TopDirectoryOnly);
  43. Console.WriteLine($"There are totally {allFiles.Length} files in {dir}");
  44. if (allFiles != null && allFiles.Any())
  45. {
  46. for (int i = ; i < allFiles.Length; i++)
  47. {
  48. GenerateMD5ForLargeFiles(allFiles[i]);
  49. }
  50. }
  51. }
  52. static void GenerateMD5ForLargeFiles(string fileName)
  53. {
  54. StringBuilder stringBuilder = new StringBuilder();
  55. using (Stream readStream = File.OpenRead(fileName))
  56. {
  57. using (MD5 bigFileMD5 = MD5.Create())
  58. {
  59. using (MD5CryptoServiceProvider cryptoServiceProvider = new MD5CryptoServiceProvider())
  60. {
  61. byte[] data = cryptoServiceProvider.ComputeHash(readStream);
  62. for (int i = ; i < data.Length; i++)
  63. {
  64. stringBuilder.Append(data[i].ToString("x2"));
  65. }
  66. }
  67. }
  68. }
  69. MD5List.Add(stringBuilder.ToString());
  70. LogMessage(stringBuilder.ToString());
  71. }
  72. }
  73. }
  1.  
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Net.Mail;
  7. using System.Net;
  8. using System.Threading;
  9. using System.IO;
  10. using System.Security.Cryptography;
  11.  
  12. namespace ConsoleApp348
  13. {
  14. class Program
  15. {
  16. static List<String> MD5List = new List<string>();
  17. static void Main(string[] args)
  18. {
  19. string dir = @"C:\Users\Fred\Downloads";
  20. GetFiles(dir);
  21.  
  22. if(MD5List.Any())
  23. {
  24. Parallel.ForEach(MD5List, x =>
  25. {
  26. Console.WriteLine(x);
  27. });
  28. }
  29. Console.ReadLine();
  30. }
  31.  
  32. static void GetFiles(string dir)
  33. {
  34. string[] allFiles = Directory.GetFiles(dir, "*", SearchOption.TopDirectoryOnly);
  35. Console.WriteLine($"There are totally {allFiles.Length} files in {dir}");
  36. if(allFiles!=null && allFiles.Any())
  37. {
  38. for(int i=;i<allFiles.Length;i++)
  39. {
  40. GenerateMD5ForLargeFiles(allFiles[i]);
  41. }
  42. }
  43. }
  44. static void GenerateMD5ForLargeFiles(string fileName)
  45. {
  46. StringBuilder stringBuilder = new StringBuilder();
  47. using (Stream readStream = File.OpenRead(fileName))
  48. {
  49. using (MD5 bigFileMD5 = MD5.Create())
  50. {
  51. byte[] data = bigFileMD5.ComputeHash(readStream);
  52. for(int i=;i<data.Length;i++)
  53. {
  54. stringBuilder.Append(data[i].ToString("x2"));
  55. }
  56. }
  57. }
  58. MD5List.Add(stringBuilder.ToString());
  59. }
  60. }

static void GenerateMD5ForLargeFiles(string fileName)
{
StringBuilder stringBuilder = new StringBuilder();
using (Stream readStream = File.OpenRead(fileName))
{
using (MD5 bigFileMD5 = MD5.Create())
{
byte[] data = bigFileMD5.ComputeHash(readStream);
for(int i=0;i<data.Length;i++)
{
stringBuilder.Append(data[i].ToString("x2"));
}
}
}
MD5List.Add(stringBuilder.ToString());
}

[ComVisible(true)]
public sealed class MD5CryptoServiceProvider : MD5

Computes the System.Security.Cryptography.MD5 hash value for the input data using
// the implementation provided by the cryptographic service provider (CSP). This
// class cannot be inherited.

C# Large Files MD5 C# 获取大文件MD5的更多相关文章

  1. Java计算文件MD5值(支持大文件)

    import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.securit ...

  2. 如何用python最快的获取大文件的最后几行

    工作中经常会遇到处理日志文件的问题:为了得到日志的最新状态,我们需要获取日志文件的最后部分行来做判断.那么,这种情况下我们应该怎么做呢? 1)常规方法:从前往后依次读取 步骤:open打开日志文件. ...

  3. 转 这种方法可以免去自己计算大文件md5 的麻烦

    using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEditor;using ...

  4. 基于js-spark-md5前端js类库,快速获取文件Md5值

    js-spark-md5是歪果仁开发的东西,有点多,但是我们只要一个js文件即可,具体类包我存在自己的oschina上,下载地址:https://git.oschina.net/jianqingwan ...

  5. Vue.js实现大文件分片md5断点续传

    背景 根据部门的业务需求,需要在网络状态不良的情况下上传很大的文件(1G+).其中会遇到的问题:1,文件过大,超出服务端的请求大小限制:2,请求时间过长,请求超时:3,传输中断,必须重新上传导致前功尽 ...

  6. ios获取文件MD5值

    一般我们在使用http或者socket上传或者下载文件的时候,经常会在完成之后经行一次MD5值得校验(尤其是在断点续传的时候用的更 多),校验MD5值是为了防止在传输的过程当中丢包或者数据包被篡改,在 ...

  7. php解决大文件断点续传

    核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...

  8. php使用WebUploader做大文件的分块和断点续传

    核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...

  9. B/S架构大文件上传问题

    核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...

随机推荐

  1. WPF/.net core WPF 系统托盘支持

    WPF 原生不支持系统托盘图标,需要依靠其它方式处理. 1 使用 WinForm 的支持 WPF最小到系统托盘 - Arvin.Mei - 博客园 2 使用 wpf-notifyicon 库 hard ...

  2. SpringMVC详解------参数绑定

    SpringMVC详解------参数绑定  转载于:https://blog.csdn.net/swebin/article/details/92795422 目录 1.SpringMVC 参数绑定 ...

  3. npm ERR! code Z_BUF_ERROR

    最新学习egg,在npm install egg --save 步骤中总是报错如下: npm ERR! code Z_BUF_ERROR npm ERR! errno -5 npm ERR! zlib ...

  4. 表单_HTML

    HTML表单_输入元素 大多数情况被用到的表单标签是输入标签 输入类型是由类型属性(type)定义的. 表单中的单选按钮可以设置以下几个属性:value.name.checked value:提交数据 ...

  5. 顺F速运国际版,你的密码漏点了

    - 加密情况分析 对APP的分析过程,当然首先是安装,使用,抓包啦. 同样地,登录,抓包看看. 使用账号密码登录. - 壳呢? 虽然直接解密了顺F国际版的加密数据,但还是有必要看看它的APK. 经过分 ...

  6. Android 布局测试

    wrap_content <Button android:id="@+id/button1" android:layout_width="wrap_content& ...

  7. Xcode修改工程文件名字

    http://stackoverflow.com/questions/8262613/renaming-xcode-4-project-and-the-actual-folder

  8. [视频教程] 使用composer安装使用thinkphp6.0框架

    安装composer -vvv的参数是表示展示安装进度,测试时使用其他参数安装失败,一直卡着不动curl -vvv https://getcomposer.org/installer | phpmv ...

  9. 1、mongoDB服务器的搭建与连接

    下载----编译----安装之后: 1.首先,创建一个mongodb_simple的目录,进入到目录中. 2.创建文件夹:data,用来存储数据库的数据文件. 3.创建文件夹:log,用来存储数据库的 ...

  10. CodeForces - 573A (简单数论+模拟)

    题意 https://vjudge.net/problem/CodeForces-573A 有n个数ai​ ,你可以把每个数任意次×2 或×3 ,问能否最终使得每个数相等. 思路 x2和x3只能改变数 ...