积极答复者
判断是否为当前目录

问题
-
我现在要添加一个图片到当前目录下,就像QQ里面添加表情一样,如果选择的图片就在当前目录,则不用拷贝,如果不在当前目录,则将文件拷贝到当前目录。但是如果当前目录下有与之重名的文件,则重命名(自动重命名)。请问,该怎么实现呢?
OpenFileDialog fileChooser = new OpenFileDialog();
fileChooser.RestoreDirectory = true; //用来指示对话框在关闭前是否还原当前目录
fileChooser.Filter = "JPEG(*.GPEG;*.GPG;*.JPE)|*.JPG";
DialogResult result = fileChooser.ShowDialog();
我不知道下面怎么写了,请高手指点。
勿以恶小而为之,勿以善小而不为
答案
-
你好!
其他的都比较好办,主要是你的第一条要求,就算文件名不同,也很有可能是同样的图片,这涉及到比较两个图片是否一致的问题,你这样比较:
private bool Same(Image image1, Image image2) { MemoryStream ms1 = new MemoryStream(); MemoryStream ms2 = new MemoryStream(); image1.Save(ms1, System.Drawing.Imaging.ImageFormat.Bmp); image2.Save(ms2, System.Drawing.Imaging.ImageFormat.Bmp); byte[] im1 = ms1.GetBuffer(); byte[] im2 = ms2.GetBuffer(); if (im1.Length != im2.Length) return false; else { for (int i = 0; i < im1.Length; i++) if (im1[i] != im2[i]) return false; } return true; }
周雪峰- 已建议为答案 肖小勇Moderator 2009年6月22日 2:47
- 已标记为答案 韦恩卑鄙 waywaModerator 2009年6月22日 8:13
-
file 有 exists 方法
而且 QQ的表情文件名一般都是文件内容的hash 所以不大可能出现文件名不同 内容一样的状况
紫柔版主的头像真叫萌得一个不行啊。。。。
答案800 撒花- 已标记为答案 韦恩卑鄙 waywaModerator 2009年6月22日 8:16
全部回复
-
你好!
其他的都比较好办,主要是你的第一条要求,就算文件名不同,也很有可能是同样的图片,这涉及到比较两个图片是否一致的问题,你这样比较:
private bool Same(Image image1, Image image2) { MemoryStream ms1 = new MemoryStream(); MemoryStream ms2 = new MemoryStream(); image1.Save(ms1, System.Drawing.Imaging.ImageFormat.Bmp); image2.Save(ms2, System.Drawing.Imaging.ImageFormat.Bmp); byte[] im1 = ms1.GetBuffer(); byte[] im2 = ms2.GetBuffer(); if (im1.Length != im2.Length) return false; else { for (int i = 0; i < im1.Length; i++) if (im1[i] != im2[i]) return false; } return true; }
周雪峰- 已建议为答案 肖小勇Moderator 2009年6月22日 2:47
- 已标记为答案 韦恩卑鄙 waywaModerator 2009年6月22日 8:13
-
file 有 exists 方法
而且 QQ的表情文件名一般都是文件内容的hash 所以不大可能出现文件名不同 内容一样的状况
紫柔版主的头像真叫萌得一个不行啊。。。。
答案800 撒花- 已标记为答案 韦恩卑鄙 waywaModerator 2009年6月22日 8:16