コード例 #1
0
        public void Extract(string basedir)
        {
            string TargetFile = System.IO.Path.Combine(basedir, FileName);

            using (System.IO.MemoryStream memstream = new System.IO.MemoryStream(_FileData))
            {
                using (System.IO.Compression.DeflateStream input =
                           new System.IO.Compression.DeflateStream(memstream, System.IO.Compression.CompressionMode.Decompress))
                {
                    // ensure the target path exists
                    if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(TargetFile)))
                    {
                        System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(TargetFile));
                    }

                    using (System.IO.FileStream output = new System.IO.FileStream(TargetFile, System.IO.FileMode.CreateNew))
                    {
                        //BinaryWriter w = new BinaryWriter(fs);

                        byte[] bytes = new byte[4096];
                        int    n;

                        n = 1; // anything non-zero
                        while (n != 0)
                        {
                            n = input.Read(bytes, 0, bytes.Length);

                            if (n > 0)
                            {
                                output.Write(bytes, 0, n);
                            }
                        }
                    }

                    if (LastModified.IsDaylightSavingTime())
                    {
                        System.IO.File.SetLastWriteTime(TargetFile, LastModified.AddHours(1));
                    }
                    else
                    {
                        System.IO.File.SetLastWriteTime(TargetFile, LastModified);
                    }
                }
            }
        }