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. LibreOJ #110. 乘法逆元

    二次联通门 : LibreOJ #110. 乘法逆元 /* LibreOJ #110. 乘法逆元 求一个数在模意义下的所有逆元 */ #include <cstdio> void read ...

  2. JavaWeb_(Mybatis框架)输入和输出参数_五

    系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...

  3. Pwnhub Fantastic Key-一点总结

    index.php <? php error_reporting(0); include 'config.php'; $id = $_POST['i'] ? waf($_POST['i']) : ...

  4. ionic serve 报【ionic-app-scripts' 不是内部或外部命令 】问题解

    Error: Cannot find module 'E:\angular\ionic0515\node_modules\@ionic\app-scripts'    at Function.Modu ...

  5. poj1734

    Sightseeing trip Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9078   Accepted: 3380 ...

  6. kotlin之函数的基本用法

    fun main(arg: Array<String>) { val )//调用函数 print(double) } fun double(x:Int):Int{ *x } kotlin函 ...

  7. HTTP的响应协议

    响应行介绍,响应状态码 1XX: 客户端请求服务器,但是请求未完成,服务器什么事也没干 2XX: 表示响应成功,代表性的状态码就是200 3XX: 请求重定向,代表性的状态码302 4XX: 客户端发 ...

  8. android在点击EditText的时候始终不弹出软件键盘

    场景描述:正常情况下,当点击EditText时,软键盘会弹出来.现在的要求是当点击EditText时,弹日期选择对话框,选择的结果显示在EditText上.若不处理,当点击EditText时,软键盘和 ...

  9. [Scikit-learn] 2.3 Clustering - Spectral clustering

    From: 2.3.5 Clustering - Spectral clustering From: 漫谈 Clustering (4): Spectral Clustering From: 漫谈 C ...

  10. 怎样获取java新IO的Path文件大小

    import org.junit.Test; import java.io.IOException; import java.nio.file.Files; import java.nio.file. ...