c# base64及MD5工具类
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text; namespace TJCFinanceWriteOff.BizLogic.Common
{
public class FileUtil
{ /// <summary>
/// 将文件转换为base64String
/// </summary>
/// <param name="filePath">文件路径</param>
/// <returns></returns>
public static string GetFileBase64(string filePath)
{
filePath = filePath ?? throw new ArgumentException("文件路径错误"); try
{
using(FileStream fs = File.OpenRead(filePath))
{
return GetFileBase64(fs);
}
}
catch (Exception ex)
{
throw;
}
} /// <summary>
/// 将文件转换为base64String
/// </summary>
/// <param name="stream"></param>
/// <returns></returns>
public static string GetFileBase64(Stream stream)
{
stream = stream ?? throw new ArgumentException("参数不能为空"); try
{
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, , bytes.Length);
// 设置当前流的位置为流的开始
stream.Seek(, SeekOrigin.Begin);
return Convert.ToBase64String(bytes,, bytes.Length);
}
catch (Exception ex)
{
throw;
}
} /// <summary>
/// 计算文件的MD5值
/// 用做于缓存Key
/// </summary>
/// <param name="arg">类型只能为string or stream,否则将会抛出错误</param>
/// <returns>文件的MD5值</returns>
public static string GetFileMd5(object arg)
{
MD5 md5Hash = MD5.Create();
byte[] data = null; switch (arg)
{
case string str:
data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(str));
break;
case Stream stream:
data = md5Hash.ComputeHash(stream);
break;
case null:
throw new ArgumentException("参数不能为空");
default:
throw new ArgumentException("参数类型错误");
}
StringBuilder sBuilder = new StringBuilder();
for (int i = ; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
md5Hash.Dispose();
return sBuilder.ToString();
} /// <summary>
/// 遍历文件夹获取文件路径
/// </summary>
/// <param name="direPath"></param>
/// <returns></returns>
public static DataTable GetFilesByDirePath(string direPath)
{
DirectoryInfo folder = new DirectoryInfo(direPath);
if (!folder.Exists)
{
throw new DirectoryNotFoundException("文件夹不存在!");
} var datas = (from x in folder.GetFiles()
where x.Extension == ".jpg" || x.Extension == ".jpeg"
orderby int.Parse(x.Name.Split('.')[])
select x.FullName).ToArray(); var dt = new DataTable();
dt.Columns.Add("序号", typeof(int));
dt.Columns.Add("扫描图片", typeof(string));
dt.Columns.Add("识别结果", typeof(string));
DataRow dr = null;
for (int i = ; i < datas.Length; i++)
{
dr = dt.NewRow();
dr[] = i + ;
dr[] = datas[i];
dr[] = "未扫描";
dt.Rows.Add(dr);
}
return dt;
} /// <summary>
/// 将DataTable中的数据转换为base64集合
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string[] GetFilesBase64(DataTable dt)
{
List<string> filesBase64Array = new List<string>();
foreach (DataRow item in dt.Rows)
{
filesBase64Array.Add(GetFileBase64(item["扫描图片"].ToString()));
}
return filesBase64Array.ToArray();
} /// <summary>
/// 将图片List以正面 反面 分割
/// </summary>
/// <param name="source">源数据List</param>
/// <param name="obverse">正面图片集合</param>
/// <param name="reverse">反面图片集合</param>
public static void SplitList(List<string> source, out List<string> obverse, out List<String> reverse)
{
//1.将List一分为二
obverse = source.Take(source.Count / ).ToList();
reverse = source.Skip(source.Count / ).ToList();
reverse.Reverse();
} /// <summary>
/// 将图片List以正面 反面 分割 (备用)
/// </summary>
/// <param name="source">源数据List</param>
/// <param name="obverse">正面图片集合</param>
/// <param name="reverse">反面图片集合</param>
public static void SplitListBackup(List<string> source, out List<string> obverse, out List<String> reverse)
{
//1.将List一分为二并翻转
obverse = new Queue<string>(source.Take(source.Count / )).ToList();
reverse = new Stack<string>(source.Skip(source.Count / )).ToList();
}
}
}
c# base64及MD5工具类的更多相关文章
- MD5工具类,提供字符串MD5加密、文件MD5值获取(校验)功能
MD5工具类,提供字符串MD5加密(校验).文件MD5值获取(校验)功能 : package com.yzu.utils; import java.io.File; import java.io.Fi ...
- Base64加密解密工具类
使用Apache commons codec类Base64进行加密解密 maven依赖 <dependency> <groupId>commons-codec</grou ...
- ios Base64编解码工具类及使用
为了避免明码传递http内容,可以用base64编码后传输,收到方再解码,也方便了2进制数据的字符串式传输. 对于ios来说,google给提供了一个很好的工具类,方便进行base64编解码,当然也可 ...
- MD5 工具类
package com.payease.chains.risk.utils; /** * md5密码加密工具类 * Created by liuxiaoming on 2017/8/28. */ pu ...
- java MD5工具类
package com.common.tools; import java.security.MessageDigest; /** * MD5加密工具类 * <功能详细描述> * * @a ...
- MD5工具类-详细
public class MD5Code { /* * 下面这些S11-S44实际上是一个4*4的矩阵,在原始的C实现中是用#define 实现的, 这里把它们实现成为static * final是表 ...
- MD5工具类
package com.liu.hellomavenweb.util; import java.security.MessageDigest; /** * * @author 刘楠 * */ publ ...
- 对指定文件生成数字摘要的MD5工具类
md5特点:压缩性.不可逆性,经常用于传值过程中的值加密或文件加密static char hexdigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', ...
- 170405、java版MD5工具类
package com.rick.utils; import java.security.MessageDigest; import java.security.NoSuchAlgorithmExce ...
随机推荐
- Poj 2976 Dropping tests(01分数规划 牛顿迭代)
Dropping tests Time Limit: 1000MS Memory Limit: 65536K Description In a certain course, you take n t ...
- linux crontab 防止周期内为执行完成重复执行
问题的背景: 我们常常需要通过crontab部署某个脚本运行某些定时任务,但在实际的过程中,一旦处理不好可能导致在同一时刻出现脚本的多个运行副本,比如crontab的调度是每5 分钟运行一次脚本,如果 ...
- Drainage Ditches (HDU - 1532)(最大流)
HDU - 1532 题意:有m个点,n条管道,问从1到m最大能够同时通过的水量是多少? 题解:最大流模板题. #include <iostream> #include <algor ...
- redis之订阅功能
redis订阅 Redis 通过 PUBLISH . SUBSCRIBE 等命令实现了订阅与发布模式. 举例1: qq群的公告,单个发布者,多个收听者 发布/订阅 实验 命令 PUBLISH chan ...
- docker部署nginx+vue项目
1.vue项目打包 npm run build 会在项目生成dist文件夹,这个文件夹可以使用nginx或tomcat来发布服务 2.查找nginx基础镜像 可以通过以下网站找到符合自己的基础镜像,我 ...
- Jmeter Web 性能测试入门 (四):一个小实例带你学会 Jmeter 脚本编写
测试场景: 模拟并发100个user,在TesterHome 站内搜索VV00CC 添加线程组 添加HTTP信息头管理器 添加HTTP Sampler 填写HTTP Sampler中的信息 添加监听器 ...
- fastjson序列化和反序列化报com.alibaba.fastjson.JSONException: autoType is not support异常问题,解决方案整合
1.问题起因 2017年3月15日,fastjson官方发布安全升级公告,该公告介绍fastjson在1.2.24及之前的版本存在代码执行漏洞,当恶意攻击者提交一个精心构造的序列化数据到服务端时,由于 ...
- netframework webapi IogAttribute记录request参数和错误信息
参考博客 https://www.cnblogs.com/hnsongbiao/p/7039666.html 书写LogFilterAttribute public class LogFilterAt ...
- 进程| 线程 | 阻塞 | 阻塞&非阻塞 和 同步&异步
阻塞&非阻塞 阻塞IO 调用之后一定要等到系统内核完成所有的操作之后才结束,因此它的缺点:CPU等待IO,处理能力得不到充分利用. 非阻塞IO 为了解决阻塞IO带来的一些问题,内核提供了非阻塞 ...
- C#与C++数据类型比较及结构体转换(搜集整理二)
原文网址:http://www.blogjava.net/heting/archive/2010/03/20/315998.html C++ C# ========================== ...