C#代码遍历数据库达到删除没用图片的功能

w5588660 2010-08-28 06:51:27
情况如下:
我们网站有固定上传图片的文件夹Images,
现在这个文件夹的图片太多了,想把没用的删除。
数据库是ACCESS的,数据库里有一字段news是FCK内容的,所有的图片链接都能在这个字段遍历出来.
基本思路,先写个CS的代码吧数据库字段news的图片名遍历出来,然后对比Images文件夹的图片名,Images文件夹多出来的图片就可以用代码删除了。
不过不知道具体怎么实现!高手们给些建议或者参考代码,谢谢!
...全文
117 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
aofengdaxia 2010-08-29
  • 打赏
  • 举报
回复
通过正则表达式,获得News里面所有的图片。然后
DirectoryInfo di = new DirectoryInfo(@"路径");
int idx = 0;

foreach (FileInfo fi in di.GetFiles())//可以用 di.GetFiles("*.jpg") 只对某个后缀名的图片进行处理
{

}

进行比较
捷哥1999 2010-08-29
  • 打赏
  • 举报
回复
1、读取数据库字段,这个你应该会吧
2、对比文件名是否相同,只能遍历文件夹去比较了:

DirectoryInfo di = new DirectoryInfo(@"路径");
int idx = 0;

foreach (FileInfo fi in di.GetFiles())//可以用 di.GetFiles("*.jpg") 只对某个后缀名的图片进行处理
{

}

wuyq11 2010-08-28
  • 打赏
  • 举报
回复
通过正则获取图片名称。再遍历文件夹比较
或List<File>实现查询
string fckStr = FCKeditor1.Value;
MatchCollection matchs = Regex.Matches(fckStr, @ " <img\s[^> ]*src=([ " " ']*)(? <src> [^ ' " "]*)\1[^> ]*> ", RegexOptions.IgnoreCase);
foreach (Match m in matchs) {
Response.Write(m.Groups[ "src "].Value+ " <br> ");
}
string[] files = Directory.GetDirectories("D:\\", "*.*", SearchOption.AllDirectories);
foreach(string f in files)
{
FileInfo fi = new FileInfo(f);
}

jointan 2010-08-28
  • 打赏
  • 举报
回复
应该先遍历Images文件夹的图片名,然后去数据库中对比,不存在则删除

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧