ICSharpCode.SharpZipLib.Zip(a zip file in memory) 高手們請幫忙!

cancancam 2013-01-30 12:30:19
大家好,有一个关于ICSharpCode.SharpZipLib.Zip压缩的问题

比方说有两个文件"C:\1.txt", "C:\2.txt"
然后
ZipFile Zip = ZipFile.Create(Memory)
...
Zip.Add("C:\1.txt");
Zip.Add("C:\2.txt");
...

成功压缩后拉链里面的目录为:
test.zip
|-- 1.txt
|-- 2.txt

我想问一下,怎样才能在zip里面创建目录,然后把文件根据需求分别放到不同的目录里,
像:
text.zip
|-- Succ
|-- 1.txt
|-- Error
|-- 2.txt


非常感谢大家!
...全文
252 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyl8781697 2013-01-30
  • 打赏
  • 举报
回复
那LZ能不能用一种方法变通一下 在压缩之前create两个文件夹 把相应的文件move进去 到时候压缩的时候add这两个文件夹 那压缩出来不就达到LZ的需求了么
夜色镇歌 2013-01-30
  • 打赏
  • 举报
回复
cancancam 2013-01-30
  • 打赏
  • 举报
回复
引用 3 楼 caozhy 的回复:
http://stackoverflow.com/questions/4733707/zip-subfolders-using-zipoutputstream //Create the right arborescence within the archive string stFileName = fi.FullName.Remove(0, stDirToZip……
這個方法可行,非常感謝大家~
  • 打赏
  • 举报
回复
  class filestream : IStaticDataSource
        {
            Stream sm = null;
            public filestream(string filename)
            {
                sm = File.Open(filename, FileMode.Open);
            }
            public Stream GetSource()
            {
                return sm;
            }
        }
        static void Main(string[] args)
        {
            var mms = File.Create("D:\\a.zip");
            ZipFile Zip = ZipFile.Create(mms);
            Zip.BeginUpdate();
            Zip.AddDirectory("文件夹1");
            Zip.AddDirectory("文件夹2");
            Zip.Add(new filestream("D:\\1.txt"), "文件夹1/1.txt");
            Zip.Add(new filestream("D:\\2.txt"), "文件夹2/2.txt");
            Zip.CommitUpdate();
            Zip.Close();
            Console.ReadLine();
        }
yyl8781697 2013-01-30
  • 打赏
  • 举报
回复
引用 4 楼 cancancam 的回复:
引用 2 楼 yyl8781697 的回复:那LZ能不能用一种方法变通一下 在压缩之前create两个文件夹 把相应的文件move进去 到时候压缩的时候add这两个文件夹 那压缩出来不就达到LZ的需求了么 谢谢您的回复,您的提议非常好,但是因为是服务器端进行压缩,所以不想在服务器建立多余的文件夹,还有其他更好的建议吗?
你可以新建在一个temp的文件夹里面 每次上传压缩完之后可以清空该文件 因为对这个zip的dll不是很熟 所以。。。。。
cancancam 2013-01-30
  • 打赏
  • 举报
回复
引用 2 楼 yyl8781697 的回复:
那LZ能不能用一种方法变通一下 在压缩之前create两个文件夹 把相应的文件move进去 到时候压缩的时候add这两个文件夹 那压缩出来不就达到LZ的需求了么
谢谢您的回复,您的提议非常好,但是因为是服务器端进行压缩,所以不想在服务器建立多余的文件夹,还有其他更好的建议吗?
threenewbee 2013-01-30
  • 打赏
  • 举报
回复
http://stackoverflow.com/questions/4733707/zip-subfolders-using-zipoutputstream //Create the right arborescence within the archive string stFileName = fi.FullName.Remove(0, stDirToZip.Length + 1); ZipEntry entry = new ZipEntry(stFileName);

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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