就这样获取文件的MD5和大小
纠结真蛋疼
判断一件事值不值得去做的唯一标准是这件事是不是令我
纠结
。如果纠结了,就不去做了!但是,人总要活着,又能怎样。谁说男人就没有那么几天......
从极速妙传说起
在现在各大厂商都推出免费云盘的时代,貌似也只有我在当初花点钱还特兴奋的去买云盘空间。免费使得大家都是拿着好处后,然后不再特别在意去关注文件的隐私及安全问题了。“极速妙传”是不是对比他们所有服务器上的文件,呵呵,大家都心知肚明了吧。
好多人质疑为什么U盘、硬盘、内存的真实容量都比标榜的少?其实是1024啦。不多说了,现在,如果去做个类似 云盘 的东东,这不可能吧!
硬生生的干货
下面代码主要是获取文件后,读取成文件流,得到文件的字节、大小、内容等所有信息。That's All.
public string GetMD5Hash(string path)
{
MD5 md5Hasher = MD5.Create();
byte[] data;
try
{
if (IsRemoteUrl(path))
{
var request = System.Net.FileWebRequest.Create(path);
var size = request.GetResponse().ContentLength;
var fs = request.GetResponse().GetResponseStream();
data = md5Hasher.ComputeHash(fs);
}
else
{
var fs = new System.IO.FileStream(path, System.IO.FileMode.Open);
data = md5Hasher.ComputeHash(fs);
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sb.Append(data[i].ToString("x2"));
}
return sb.ToString();
}
catch (Exception ex)
{
//throw; //ToDO Something...
return null;
}
}
public string GetFileSize(string path)
{
decimal length;
try
{
if (IsRemoteUrl(path))
{
var request = System.Net.FileWebRequest.Create("path");
length = request.GetResponse().ContentLength;
}
else
{
var fileInfo = new System.IO.FileInfo(path);
length = fileInfo.Length;
}
string[] size = { "B", "KB", "MB", "GB" };
int order = 0;
while (length >= 1024 && order + 1 < size.Length)
{
order++;
length = length / 1024;
}
var fileSize = string.Format("{0:0.##} {1}", length, size[order]);
return fileSize;
}
catch (Exception)
{
//throw; //ToDO Something...
return null;
}
}
public bool IsRemoteUrl(string url)
{
if (string.IsNullOrEmpty(url))
return false;
if (!url.Contains("http://"))
return false;
if (url.Substring(0, 7) == "http://")
return true;
return false;
}
结尾
代码就这样,写的比较烂,加入了判断是不是远程Url地址,看不懂想打我看这里。
就这样获取文件的MD5和大小的更多相关文章
- JAVA 获取文件的MD5值大小以及常见的工具类
/** * 获取文件的MD5值大小 * * @param file * 文件对象 * @return */ public static String getMD5(File file) { FileI ...
- swift 获取文件的Md5值
获取文件的Md5值的方法如下 func md5File(url: URL) -> String? { let bufferSize = 1024 * 1024 do { //打开文件 let f ...
- iOS开发之获取文件的md5值
我们经常有下载文件上的需求 为了安全我们经常需要对文件进行md5校验 那我就来给大家分享一个很方便的获取文件md5值得方法. 首先需要引用系统库文件 #include <CommonCrypto ...
- C#获取文件的MD5码
using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace Send ...
- 获取文件的MD5码(C#)
using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace Test ...
- Jav获取文件的MD5码,比较两个文件内容是否相同
Jav获取文件的MD5码,比较两个文件内容是否相同 代码: System.out.println(DigestUtils.md5Hex(new FileInputStream(new File(&qu ...
- 在浏览器端获取文件的MD5值
前几天接到一个奇怪的需求,要在web页面中计算文件的md5值,还好这个项目是只需兼容现代浏览器的,不然要坑死了. 其实对文件进行md5,对于后端来说是及其简单的.比如使用Node.js,只要下面几行代 ...
- Windows下获取文件的md5码的方法
1.certutil 命令简介 本来想找一个工具 算一个文件的md5 或者是sha 值来着. 找到一个说法是 可以使用 windows 自带的命令行来处理 具体命令 certutil -hashfil ...
- Android获取文件的MD5值
package my.bag; import java.io.File; import java.io.FileInputStream; import java.math.BigInteger; im ...
随机推荐
- InteliJ IDEA15 安装jrebel破解文件
使用InteliJ IDEA这个工具感觉比eclipse好用,例如它在没有源码的情况下自动反编译源码等,但是在使用的时,有个很不爽的地方就是不能实时编译,导致java代码更改了一点代码就需要重启项目, ...
- GPRM/GNRMC定位信息的读取与解析
帧头 UTC时间 状态 纬度 北纬/南纬 经度 东经/西经 速度 $GPRMC hhmmss.sss A/V ddmm.mmmm N/S dddmm.mmmm E/W 节 方位角 UTC日期 磁偏角 ...
- JXLS 双循环模板
商户名称 门店代码 时间 金额 <jx:forEach items="${resultList}" var="l"> ${l.name} ...
- Android判断当前线程是否是主线程的方法
开发过程中有时候会在Thread类中执行某些操作,有些操作会由于Android版本的不同,尤其是低版本而Crash,因此必要的时候会查看某些容易引起crash的操作是否是在主线程,这里举三种方法: 方 ...
- [转]Sublime Text3注册码(可用)
补充:2016.05 最近经过测试,3个注册码在新版3103的sublime上已经不可用了. 现补充两枚新版的license key: —– BEGIN LICENSE —– Michael Barn ...
- Centos7 改名问题
先看这篇 深入理解Linux修改hostname http://www.cnblogs.com/kerrycode/p/3595724.html 我使用如下方法 http://www.linuxid ...
- GameOver
GameOver. 正了八经的觉得GameOver了.该开始新的了.
- 转:windows下多线程通信方法
多线程知识简介 同一进程中可以包含多个线程,由于进程中的多个线程可以共享进程中的资源,所以使同一进程中的多个线程之间通信相对比较简单. 当需要有多个线程来访问一个全局变量时,通常我们会在这个全局变量前 ...
- Hadoop 2.4.1 Map/Reduce小结【原创】
看了下MapReduce的例子.再看了下Mapper和Reducer源码,理清了参数的意义,就o了. public class Mapper<KEYIN, VALUEIN, KEYOUT, VA ...
- FastSocket客户端/服务端通讯示例
新建控制台项目,命名为Server 添加FastSocket.SocketBase,FastSocket.Server引用 Socket命令服务类: Sodao.FastSocket.Server ...