C#文件相同性判断
在进行开发时,对文件进行上传和下载是较为普遍的行为,为了防止在文件操作过程中,出现同一文件多次操作,需要对文件进行相同性比较:
1.获取文件的绝对路径,针对window程序和web程序都可使用:
/// <summary>
/// 获取文件的绝对路径,针对window程序和web程序都可使用
/// </summary>
/// <param name="relativePath">相对路径地址</param>
/// <returns>绝对路径地址</returns>
public static string GetAbsolutePath(string relativePath)
{
if (string.IsNullOrEmpty(relativePath))
{
throw new ArgumentNullException("参数relativePath空异常!");
}
relativePath = relativePath.Replace("/", "\\");
if (relativePath[] == '\\')
{
relativePath=relativePath.Remove(, );
}
//判断是Web程序还是window程序
if (HttpContext.Current != null)
{
return Path.Combine(HttpRuntime.AppDomainAppPath, relativePath);
}
else
{
return Path.Combine(AppDomain.CurrentDomain.BaseDirectory, relativePath);
}
}
2.获取文件的绝对路径,针对window程序和web程序都可使用:
/// <summary>
/// 获取文件的绝对路径,针对window程序和web程序都可使用
/// </summary>
/// <param name="relativePath">相对路径地址</param>
/// <returns>绝对路径地址</returns>
public static string GetRootPath()
{
//判断是Web程序还是window程序
if (HttpContext.Current != null)
{
return HttpRuntime.AppDomainAppPath;
}
else
{
return AppDomain.CurrentDomain.BaseDirectory;
}
}
3.通过文件Hash 比较两个文件内容是否相同:
/// <summary>
/// 通过文件Hash 比较两个文件内容是否相同
/// </summary>
/// <param name="filePath1">文件1地址</param>
/// <param name="filePath2">文件2地址</param>
/// <returns></returns>
public static bool isValidFileContent(string filePath1, string filePath2)
{
//创建一个哈希算法对象
using (HashAlgorithm hash = HashAlgorithm.Create())
{
using (FileStream file1 = new FileStream(filePath1, FileMode.Open), file2 = new FileStream(filePath2, FileMode.Open))
{
byte[] hashByte1 = hash.ComputeHash(file1);//哈希算法根据文本得到哈希码的字节数组
byte[] hashByte2 = hash.ComputeHash(file2);
string str1 = BitConverter.ToString(hashByte1);//将字节数组装换为字符串
string str2 = BitConverter.ToString(hashByte2);
return (str1 == str2);//比较哈希码
}
}
}
4.计算文件的hash值 用于比较两个文件是否相同:
/// <summary>
/// 计算文件的hash值 用于比较两个文件是否相同
/// </summary>
/// <param name="filePath">文件路径</param>
/// <returns>文件hash值</returns>
public static string GetFileHash(string filePath)
{
//创建一个哈希算法对象
using (HashAlgorithm hash = HashAlgorithm.Create())
{
using (FileStream file = new FileStream(filePath, FileMode.Open))
{
//哈希算法根据文本得到哈希码的字节数组
byte[] hashByte= hash.ComputeHash(file);
//将字节数组装换为字符串
return BitConverter.ToString(hashByte);
}
}
}
C#文件相同性判断的更多相关文章
- JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤
JAVA之旅(二十八)--File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤 我们可以继续了,今天说下File 一.File概述 文件的操作是非常 ...
- magento的robots文件编写和判断是否是一个导航分类页面
magento是网店系统,我们突出的是我们的产品,所以,有很多路径我们不想让搜索引擎索引到,所以我们需要用robots文件进行限制 下面是麦神magento的robots.txt里面的内容,因为很多u ...
- SpringMVC上传文件以流方式判断类型附常用类型
// 此类中判断类型所截取的byte 长度暂不确定,请使用者测试过使用 package com.tg.common.other; import com.tg.common.tginterface.TG ...
- 四、Mp3文件类型及其判断
根据前两篇文章的分析,帧分为标签帧和数据帧,MP3文件类型是根据数据帧的类型来分的,文件类型如下表: 位率相等(Constant BitRate) CBR Mp3文件 位率不等(Variable B ...
- ecshop的模板文件中如何判断用户是否登录
ecshop中对于smarty的运用和改造有很大的值得借鉴的地方,在dwt模板文件中可以直接判断用户是否登录,现在有规定,凡是只展示不销售的电商平台,一律不得展示商品价格,但可以在用户登录后显示. & ...
- (JavaScript)实现上传图片实时预览和(文件)大小判断
唉,为什么我一个做大数据和后端的要为前端耗尽心力啊??!! 昨天在做一个网页时遇到了一个问题,有一处需要插入图片,我原本的想法是获取到上传文件的URL,然后动态插入img标签,设置src为图片的URL ...
- servlet操作本地文件汇总: 判断文件是否存在;文件重命名;文件复制; 获取文件属性信息,转成Json对象; 获取指定类型的文件; 查找替换.txt中的文本
package servlet; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; ...
- C# 操作文件类,文件夹存在判断,创建,文件内容读写。
此篇文档是老早就放到草稿箱中了,断断续续编辑了几次.结合自己经常用到的对于文件的操作,结合msdn做此文. 1.File 类 --转自msdn 常用方法: 名称 说明 AppendAllLines(S ...
- 160414、java上传文件以流方式判断类型
public enum FileType { /** * JEPG. */ JPEG("FFD8FF"), / ...
随机推荐
- 对Java初学者的忠告
1) 适合自己的图书才是最好的,最好的书并不一定适合你,看自己的情况. 如果你是一个Java初学者一上手就捧一本Thinking in Java在手里,我想你的日子是不会好过的,那样的书给有一定基础的 ...
- Js中变量的作用域
一.理解函数作用域需要理解以下几点: 1.函数变量的作用域有全局变量和局部变量两种,全局变量写在函数的最前面,局部变量写在函数体内,局部变量省略了var 也就默认成为了全局变量! 2.函数 ...
- Android课程---关于Service的学习(后台运行)
MainActivity.java package com.hanqi.test2; import android.content.ComponentName; import android.cont ...
- Nova PhoneGap框架 第四章 本地数据库
我一直想把EntityFramework(简称EF)的那一套搬过来,应用于HTML5 SQLite. 幸运的是,我几乎做到了,有些功能无法完成的那是因为SQLite本身不支持.至少从现在已经完成的功能 ...
- UIColor 使用起来的坑
我们一般会用 UIColor 的RGB来生成颜色: [UIColor colorWithRed:220/255 green:220/255 blue:220/255 alpha:1.0];//这样生成 ...
- C#事件
事件(event),这个词儿对于初学者来说,往往总是显得有些神秘,不易弄懂.而这些东西却往往又是编程中常用且非常重要的东西.大家都知道windows消息处理机制的重要,其实C#事件就是基于window ...
- 【夔堂】:程序血泪史之——有一种垃圾语言叫做JavaScript
"Prototype"机制是个半成品OOP,有些文章说这玩意当初为了"简单(编写).容易(学习)"而发明的,但web前端技术发展到今天我们看到,JS显然是需要O ...
- 【笔记】js获取当前点击元素的索引
以前用jq 做过图片切换 滑动之类的特效现在想用js 试试是怎么一回事 jq图片切换的思路是用index()函数获取当前点击的按钮的索引然后根据索引值将对应索引的图片显示出来 于是查了一下js 是如何 ...
- 谈谈关键字strictfp
Java语言中的其中一个设计目标是可移植性.无论在哪个虚拟机上运行,同一个计算应该得到同样的结果.对于浮点数的算术运算,实现这样的可移植性是相当困难的.double 类型使用 64 位存储一个 do ...
- SQL Server 无法生成 FRunCM 线程。请查看 SQL Server 错误日志和 Windows 事件日志
1.IP地址配置不正确: 打开 Microsoft SQL Server 2005配置工具下的SQL Server Configuration Manager,选择MSSQLSERVER协议, 然后双 ...