通过文件名检测文件是否存在于某文件夹中

从太平洋采集了7万多条商品数据,但是采集到的商品小图才7千多张,但是商品的图片路径又都写到数据库中了,所以在显示数据的时候从数据库中取出图片路径出来的时候要判断该图片是否存在于采集下来的图片文件夹中.
要通过文件名判断文件是否存在于文件夹中,最容易想到的方法就是通过Directory.GetFiles(Server.MapPath("~/niunantest/images"))取出图片文件夹下的所有文件的全路径的名称,如:
"D:\\太平洋商品数据查看\\pcdata\\images\\005814.jpg"
然后就可以通过foreach循环一个一个判断了,在循环中可通过字符串的Contains方法判断全路径中是否包含该文件名.
在用智能提示的时候发现string[]字符串数组也有Contains方法,判断某个字符是否在某字符数组中,但是我要比较的是[color=red]某个字符是否包含中数组中的某个元素中[/color], 根据代码智能示,Contains的第二个重载方法接收两个参数,第二个参数是实现了[color=blue]IEqualityComparer[/color]接口的一个类,到MSDN查了一下资料,得如下代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

public partial class test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string[] files = Directory.GetFiles(Server.MapPath("~/images"));
string str = "061077.jpg";
bool b = files.Contains(str, new Compare());
Response.Write("要比较的值:" + str + "<br >比较结果:" + b);
}
}

public class Compare : IEqualityComparer<string>
{
#region IEqualityComparer<string> 成员

/// <summary>
/// </summary>
/// <param name="x">类似于:"D:\\太平洋商品数据查看\\pcdata\\images\\005814.jpg"</param>
/// <param name="y">类似于:"009018.jpg"</param>
/// <returns></returns>
public bool Equals(string x, string y)
{
FileInfo fi = new FileInfo(x);
string tmp = fi.Name;
if (y == tmp)
{
return true;
}
else
{
return false;
}
}

public int GetHashCode(string obj)
{
return obj.ToString().ToLower().GetHashCode();
}

#endregion
}


这样只需要用数组的Contains方法即可得到我想要的结果!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值