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工具类的更多相关文章

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

    MD5工具类,提供字符串MD5加密(校验).文件MD5值获取(校验)功能 : package com.yzu.utils; import java.io.File; import java.io.Fi ...

  2. Base64加密解密工具类

    使用Apache commons codec类Base64进行加密解密 maven依赖 <dependency> <groupId>commons-codec</grou ...

  3. ios Base64编解码工具类及使用

    为了避免明码传递http内容,可以用base64编码后传输,收到方再解码,也方便了2进制数据的字符串式传输. 对于ios来说,google给提供了一个很好的工具类,方便进行base64编解码,当然也可 ...

  4. MD5 工具类

    package com.payease.chains.risk.utils; /** * md5密码加密工具类 * Created by liuxiaoming on 2017/8/28. */ pu ...

  5. java MD5工具类

    package com.common.tools; import java.security.MessageDigest; /** * MD5加密工具类 * <功能详细描述> * * @a ...

  6. MD5工具类-详细

    public class MD5Code { /* * 下面这些S11-S44实际上是一个4*4的矩阵,在原始的C实现中是用#define 实现的, 这里把它们实现成为static * final是表 ...

  7. MD5工具类

    package com.liu.hellomavenweb.util; import java.security.MessageDigest; /** * * @author 刘楠 * */ publ ...

  8. 对指定文件生成数字摘要的MD5工具类

    md5特点:压缩性.不可逆性,经常用于传值过程中的值加密或文件加密static char hexdigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', ...

  9. 170405、java版MD5工具类

    package com.rick.utils; import java.security.MessageDigest; import java.security.NoSuchAlgorithmExce ...

随机推荐

  1. 一些特殊的矩阵快速幂 hdu5950 hdu3369 hdu 3483

    思想启发来自, 罗博士的根据递推公式构造系数矩阵用于快速幂 对于矩阵乘法和矩阵快速幂就不多重复了,网上很多博客都有讲解.主要来学习一下系数矩阵的构造 一开始,最一般的矩阵快速幂,要斐波那契数列Fn=F ...

  2. 数据结构实验之图论八:欧拉回路(SDUT 3364)

    Problem Description 在哥尼斯堡的一个公园里,有七座桥将普雷格尔河中两个岛及岛与河岸连接起来. 能否走过这样的七座桥,并且每桥只走一次?瑞士数学家欧拉最终解决了这个问题并由此创立了拓 ...

  3. 2016百度之星资格赛 Problem B(大数+组合数)

    题意:度熊面前有一个全是由1构成的字符串,被称为全1序列.你可以合并任意相邻的两个1,从而形成一个新的序列.对于给定的一个全1序列,请计算根据以上方法,可以构成多少种不同的序列.最多200个1. 比如 ...

  4. [题解] [SDOI2015] 序列统计

    题面 题解 设 \(f[i][j]\) 代表长度为 \(i\) 的序列, 乘积模 \(m\) 为 \(j\) 的序列有多少个 转移方程如下 \[ f[i + j][C] = \sum_{A*B\equ ...

  5. ICEM—气体罐子

    原视频下载地址:https://yunpan.cn/cPfzaLzkcFXVK  访问密码 62cf

  6. Golang的文件处理方式-常见的读写

    在 Golang 语言中,文件使用指向 os.File 类型的指针来表示的,也叫做文件句柄.注意,标准输入 os.Stdin 和标准输出 os.Stdout ,他们的类型都是 *os.File 哟.在 ...

  7. arcgis python 参数验证

    import arcpy class ToolValidator(object): """Class for validating a tool's parameter ...

  8. Android:动态库(.so)调试技巧

    一.反汇编定位crash ①查看crash log: 上图已标出crash发生在 libdeflicker_gpu.so 库中的 default_fail_func() 函数,但是 libdeflic ...

  9. onNewIntent

    当Activity不是Standard模式,并且被复用的时候,会触发onNewIntent(Intent intent) 这个方法,一般用来获取新的Intent传递的数据 我们一般会把MainAcit ...

  10. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_13-页面静态化-数据模型-轮播图DataUrl接口

    要开发轮播图的DataUrl的接口 轮播图的配置的集合 xc-framework-model这个module下 CmsConfigModel的类的属性 定义接口 在api里面定义接口:CmsConfi ...