Beispiel #1
0
        public void Compress()
        {
            if (OsmFile.Extension == ".zip" || OsmFile.Extension == ".pbf")
            {
                if (Zipped || OsmFile.Extension == ".pbf") // PBF files are already compressed, we don't deal with them
                {
                    return;
                }
                else
                {
                    Zipped = true;
                    return;
                }
            }

            FileInfo      tempFile   = null;
            DirectoryInfo osmFileDir = new DirectoryInfo(OsmFile.DirectoryName);
            DirectoryInfo tempDir    = new DirectoryInfo(string.Format("{0}\\temp\\{1}", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), DateTime.Now.Ticks));

            string name    = OsmFile.Name;
            string zipName = string.Format("{0}\\{1}.zip", osmFileDir.FullName, name);

            try
            {
                tempDir.Create();
                tempFile = new FileInfo(string.Format("{0}\\{1}", tempDir.FullName, OsmFile.Name));
                OsmFile.CopyTo(tempFile.FullName);
                ZipFile.CreateFromDirectory(tempDir.FullName, zipName);

                FileInfo zipFile = new FileInfo(zipName);
                if (zipFile.Exists)
                {
                    zipFile.LastWriteTimeUtc = OsmFile.LastWriteTimeUtc;
                    zipFile.CreationTimeUtc  = OsmFile.CreationTimeUtc;
                    File.Delete(OsmFile.FullName);
                    OsmFile = zipFile;
                }
                else
                {
                    throw new Exception("Unable to compress OSM file, zipFile does not exist.");
                }
                Zipped = true;
            }
            catch (Exception ex)
            {
                LogHelper.LogException(ex);
            }
            finally
            {
                if (tempDir.Exists)
                {
                    tempDir.Delete(true);
                }
            }
        }