Directory.GetFiles 方法 (String, String, SearchOption)解压文件 后怎么覆盖
Directory.GetFiles 方法 (String, String, SearchOption)解压文件 后如何覆盖
代码先奉上
想将上传的ZIP包 解压到固定的一个目录中。/Upload/ProductImg/"
但是如果这么目录中,有包含解压的文件。 就会报错。提示文件已经存在
我现在想,如果解压后的文件 目录中包含次同名文件,我就覆盖目录中的文件。没包含就直接添加到这个目录中。
附加:可能有些朋友会说,其实不需要覆盖, 但是,我想说的是,无论需不需要覆盖。解压出来的文件,它的名称不能改掉。
因为我后续要根据名字到这个目录中查找的,如果解压同名的 你用别的名字替换,我找到的 还是之前久的文件
所以即使你改变原目录中存在的文件的名字 没关系。但解压后同名的文件 别改就行。。
请各位大神给个意见。。。
------解决方案--------------------
如果如果文件已存在,则覆盖,可以使用下面的方法 (引自How to overwrite extracted zip file in C#, WinForms?)
代码先奉上
protected void UpLoad()
{
if (FileImage.PostedFile != null && !string.IsNullOrEmpty(this.FileImage.PostedFile.FileName))
{
if (!Path.GetExtension(FileImage.PostedFile.FileName).Equals(".zip"))
{
Response.Write("<script>alert('文件格式不正确');history.go(-1)</script>");
return;
}
//上传压缩文件
var zipfileName = System.IO.Path.GetTempFileName();
var FileExt = Path.GetExtension(zipfileName);
zipfileName = zipfileName.Replace(FileExt, ".zip");
this.FileImage.SaveAs(zipfileName);
if (System.IO.File.Exists(zipfileName))
{
//解压缩的目录为
var zippath = Server.MapPath("/Upload/ProductImg/");
using (ZipFile zip = ZipFile.Read(zipfileName, System.Text.Encoding.Default))
{
zip.ExtractAll(zippath);
//将所有文件解压到改目录下
Directory.GetFiles(zippath, "*.*", SearchOption.AllDirectories);
}
}
}
}
想将上传的ZIP包 解压到固定的一个目录中。/Upload/ProductImg/"
但是如果这么目录中,有包含解压的文件。 就会报错。提示文件已经存在
我现在想,如果解压后的文件 目录中包含次同名文件,我就覆盖目录中的文件。没包含就直接添加到这个目录中。
附加:可能有些朋友会说,其实不需要覆盖, 但是,我想说的是,无论需不需要覆盖。解压出来的文件,它的名称不能改掉。
因为我后续要根据名字到这个目录中查找的,如果解压同名的 你用别的名字替换,我找到的 还是之前久的文件
所以即使你改变原目录中存在的文件的名字 没关系。但解压后同名的文件 别改就行。。
请各位大神给个意见。。。
------解决方案--------------------
如果如果文件已存在,则覆盖,可以使用下面的方法 (引自How to overwrite extracted zip file in C#, WinForms?)
using (ZipFile zip = ZipFile.Read(pathBackup))
{
zip.ExtractAll(Environment.CurrentDirectory, ExtractExistingFileAction.OverwriteSilently);
}