コード例 #1
0
 public FilenameDatabaseEntry(uint firstHash, string filename, uint fileSize, ArchiveTypes type = ArchiveTypes.Any)
 {
     FirstHash   = firstHash;
     FileSize    = fileSize;
     Filename    = filename;
     ArchiveType = type;
 }
コード例 #2
0
        private void listView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            var item = (FileItem)((ListView)sender).SelectedItem;

            if (ArchiveMode)
            {
                if (!item.IsDir)
                {
                    var i = (IArchiveEntry)item.Entry;

                    var path = _temporaryDirectory + DateTime.Now.ToFileTime();
                    Directory.CreateDirectory(path);
                    i.WriteToDirectory(path, new ExtractionOptions {
                        ExtractFullPath = true
                    });
                    Process.Start(path + "\\" + i.Key);
                }
                else
                {
                    var i       = (IArchiveEntry)item.Entry;
                    var archive = i.Archive;
                    var path    = _temporaryDirectory + DateTime.Now.ToFileTime();
                    Directory.CreateDirectory(path);
                    WriteToDirectory(archive, path);
                    ArchiveMode = false;
                    Process.Start(path);
                }
            }
            else
            {
                var path = item.Path;
                _type = IsArchive(path);
                OpenArchive(path);
            }
        }
コード例 #3
0
ファイル: Archive.cs プロジェクト: solutema/ultralight
                public Archive(string archiveFileName)
		{
                        this.InputStream = System.IO.File.OpenRead(archiveFileName);
			switch(System.IO.Path.GetExtension(archiveFileName).ToUpperInvariant())
			{
                                case ".BZ2":
                                case ".BZIP2":
                                        this.ArchiveType = ArchiveTypes.BZip2;
                                        break;
				case ".7Z":
					this.ArchiveType = ArchiveTypes.SevenZip;
					break;
				case ".ZIP":
					this.ArchiveType = ArchiveTypes.Zip;
					break;
			}
		}
コード例 #4
0
ファイル: Archive.cs プロジェクト: njmube/lazaro
        public Archive(string archiveFileName)
        {
            this.InputStream = System.IO.File.OpenRead(archiveFileName);
            switch (System.IO.Path.GetExtension(archiveFileName).ToUpperInvariant())
            {
            case ".BZ2":
            case ".BZIP2":
                this.ArchiveType = ArchiveTypes.BZip2;
                break;

            case ".7Z":
                this.ArchiveType = ArchiveTypes.SevenZip;
                break;

            case ".ZIP":
                this.ArchiveType = ArchiveTypes.Zip;
                break;
            }
        }
コード例 #5
0
ファイル: CompareForm.cs プロジェクト: zhoyq/BSA_Browser
        private string FormatType(ArchiveTypes type)
        {
            switch (type)
            {
            case ArchiveTypes.BA2_DX10: return("BA2 Texture");

            case ArchiveTypes.BA2_GNMF: return("BA2 Texture (GNF)");

            case ArchiveTypes.BA2_GNRL: return("BA2 General");

            case ArchiveTypes.BSA: return("BSA");

            case ArchiveTypes.BSA_MW: return("BSA Morrowind");

            case ArchiveTypes.BSA_SE: return("BSA Special Edition");

            case ArchiveTypes.DAT_F2: return("DAT Fallout 2");

            default: return(string.Empty);
            }
        }
コード例 #6
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            if (!Directory.Exists(_temporaryDirectory))
            {
                Directory.CreateDirectory(_temporaryDirectory);
            }
            //Clear the temporary directory
            foreach (var file in Directory.GetFiles(_temporaryDirectory))
            {
                File.Delete(file);
            }
            //Add the treeview items for every drive
            foreach (var s in Directory.GetLogicalDrives())
            {
                var item = new TreeViewItem
                {
                    Header     = GetStackpanel(s),
                    Tag        = s,
                    FontWeight = FontWeights.Normal
                };
                item.Items.Add(DummyNode);
                item.Expanded += folder_Expanded;
                FoldersItem.Items.Add(item);
            }
            //Adds a treeview item for the home folder:
            var home  = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
            var item2 = new TreeViewItem
            {
                Header     = GetStackpanel(home),
                Tag        = home,
                FontWeight = FontWeights.Normal
            };

            item2.Items.Add(DummyNode);
            item2.Expanded  += folder_Expanded;
            item2.IsSelected = true;

            FoldersItem.Items.Add(item2);
            //Checks if Zippy has command line args, and if so, it uses them:
            var args = Environment.GetCommandLineArgs();

            if (args.Length > 1)
            {
                var path = args[1];
                if (File.Exists(path))
                {
                    _type = IsArchive(path);
                    if (_type == ArchiveTypes.None)
                    {
                        var parent = new FileInfo(path).Directory?.FullName;
                        SelectFolder(parent);
                    }
                    else
                    {
                        OpenArchive(path);
                    }
                }
                else if (Directory.Exists(path))
                {
                    var info = new DirectoryInfo(path);
                    Zip(ArchiveTypes.Zip, null,
                        new List <FileItem> {
                        new FileItem(path)
                        {
                            IsDir = true, Path = path, Name = info.Name
                        }
                    }, true);
                }
                else
                {
                    switch (path)
                    {
                    case "-e":
                    case "-h":
                        path = args[2];
                        var info = new FileInfo(path);

                        if (IsArchive(path) != ArchiveTypes.None)
                        {
                            if (args[1] == "-e")
                            {
                                var parent = new FileInfo(path).Directory?.FullName;
                                var dialog = new CommonOpenFileDialog
                                {
                                    IsFolderPicker   = true,
                                    InitialDirectory = parent
                                };

                                var result = dialog.ShowDialog();
                                if (result == CommonFileDialogResult.Ok)
                                {
                                    if (Directory.Exists(dialog.FileName))
                                    {
                                        WriteToDirectory(ArchiveFactory.Open(path), dialog.FileName);
                                    }
                                }
                            }
                            else
                            {
                                var toDir = info.Directory?.FullName;
                                WriteToDirectory(ArchiveFactory.Open(path), toDir);
                                if (toDir != null)
                                {
                                    Process.Start(toDir);
                                }
                            }
                        }
                        break;

                    case "-a":
                        var saveAs = new CommonSaveFileDialog();
                        saveAs.Filters.Add(new CommonFileDialogFilter("Zip Archive", ".zip"));
                        saveAs.DefaultExtension = ".zip";
                        var files = args.Skip(2).ToArray();
                        saveAs.InitialDirectory = new FileInfo(files[0]).Directory?.FullName;
                        if (saveAs.ShowDialog() == CommonFileDialogResult.Ok)
                        {
                            var archive = ZipArchive.Create();
                            var tmp     = _temporaryDirectory + "\\" + DateTime.Now.Ticks;
                            Directory.CreateDirectory(tmp);
                            foreach (var file in files)
                            {
                                if (File.Exists(file))
                                {
                                    File.Copy(file, Path.Combine(tmp, new FileInfo(file).Name));
                                }
                                else if (Directory.Exists(file))
                                {
                                    DirectoryCopy(file, Path.Combine(tmp, new DirectoryInfo(file).Name));
                                }
                            }
                            archive.AddAllFromDirectory(tmp);
                            if (File.Exists(saveAs.FileName))
                            {
                                File.Delete(saveAs.FileName);
                            }

                            SaveTo(archive, saveAs.FileName, new WriterOptions(CompressionType.LZMA));
                            try
                            {
                                Directory.Delete(tmp, true);
                            }
                            catch
                            {
                                // TODO: error handling
                            }
                        }
                        break;

                    default:
                        break;
                    }
                }
            }
        }
コード例 #7
0
        private void Zip(ArchiveTypes type, WriterOptions options1, IList items, bool close = false)
        {
            if (items.Count <= 0)
            {
                return;
            }
            switch (type)
            {
            case ArchiveTypes.Zip:
            {
                if (close)
                {
                    IsEnabled = false;
                }
                var ar = ZipArchive.Create();
                var p  = "";
                foreach (var x in items)
                {
                    var item = (FileItem)x;
                    if (Directory.Exists(item.Path))
                    {
                        ar.AddAllFromDirectory(item.Path);
                    }
                    else
                    {
                        ar.AddEntry(item.Name, File.Open(item.Path, FileMode.Open, FileAccess.Read));
                    }
                    p = item.Path;
                }
                var fpath = new FileInfo(p).Directory + "\\" + ((FileItem)items[0]).Name.Split('.')[0];
                if (File.Exists(fpath + ".zip"))
                {
                    fpath += "_";
                }

                if (options1 == null)
                {
                    options1 = new WriterOptions(CompressionType.LZMA);
                }
                SaveTo(ar, fpath + ".zip", options1);
            }
            break;

            case ArchiveTypes.Deflate:
            {
                var ar = ZipArchive.Create();
                var p  = "";
                foreach (var x in items)
                {
                    var item = (FileItem)x;
                    if (Directory.Exists(item.Path))
                    {
                        ar.AddAllFromDirectory(item.Path);
                    }
                    else
                    {
                        ar.AddEntry(item.Name, File.OpenRead(item.Path));
                    }
                    p = item.Path;
                }
                Cursor = Cursors.Wait;
                loading.IsIndeterminate = true;
                var thread = new Thread(delegate()
                    {
                        var v = new FileInfo(p).Directory + "\\" + ((FileItem)items[0]).Name.Split('.')[0] + ".zip";
                        using (var _open = File.Open(v, FileMode.OpenOrCreate))
                        {
                            ar.SaveTo(_open, new WriterOptions(CompressionType.Deflate));
                            _open.Close();
                        }
                        Dispatcher.Invoke(delegate
                        {
                            Cursor = Cursors.Arrow;
                            loading.IsIndeterminate = false;
                        });
                    });
                thread.Start();
            }
            break;

            case ArchiveTypes.None:
                break;

            case ArchiveTypes.RAR:
                break;

            case ArchiveTypes.SevenZip:
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type, null);
            }
            Refresh();
        }
コード例 #8
0
        public void ZipSelected(ArchiveTypes type, WriterOptions options1 = null)
        {
            var items = FileList.SelectedItems;

            Zip(type, options1, items);
        }
コード例 #9
0
ファイル: Archive.cs プロジェクト: solutema/ultralight
                public Archive(System.IO.Stream inputStream, ArchiveTypes archiveType)
		{
                        this.InputStream = inputStream;
			this.ArchiveType = archiveType;
		}
コード例 #10
0
        private void btnVideo_Click(object sender, EventArgs e)
        {
            errProv.Dispose();

            try
            {
                if (txtFileSamp.Text == "")
                {
                    throw new Exception("No file chosen.");
                }
                else if (!File.Exists(txtFileSamp.Text))
                {
                    throw new Exception("That file does not exist, and thus can't be ran.");
                }

                string ext = Path.GetExtension(txtFileSamp.Text);


                if (VideoTypes.Contains(ext.ToLower()))
                {
                    Video videoFile = new Video(txtFileSamp.Text);

                    videoFile.ViewFile();
                }
                else if (GraphicTypes.Contains(ext.ToLower()))
                {
                    Graphic graphicFile = new Graphic(txtFileSamp.Text);


                    graphicFile.ViewFile();
                }
                else if (AudioTypes.Contains(ext.ToLower()))
                {
                    Audio audioFile = new Audio(txtFileSamp.Text);

                    audioFile.ViewFile();
                }
                else if (ArchiveTypes.Contains(ext.ToLower()))
                {
                    Archive archiveFile = new Archive(txtFileSamp.Text);



                    archiveFile.ViewFile();
                }
                else if (DocumentTypes.Contains(ext.ToLower()))
                {
                    Document docFile = new Document(txtFileSamp.Text);



                    docFile.ViewFile();
                }
                else
                {
                    throw new Exception("File type not found: the chosen file type is not supported.");
                    //System.IO.FileInfo newFile = new System.IO.FileInfo(txtFileSamp.Text);
                    //System.IO.FileAttributes b = newFile.Attributes;
                }
            }
            catch (Exception ex)
            {
                errProv.SetError(btnDisplay, ex.Message);
            }
        }
コード例 #11
0
ファイル: Archive.cs プロジェクト: njmube/lazaro
 public Archive(System.IO.Stream inputStream, ArchiveTypes archiveType)
 {
     this.InputStream = inputStream;
     this.ArchiveType = archiveType;
 }