0

MS Accessをデータベースとして使用してC#でバックアップおよび復元するこのコードがあります。zip 形式でのバックアップを完了したので、zip 形式のファイルを復元したいと考えています。どんな助けでも大歓迎です。

public void BackupDatabase(string dateToday)
    {

        string dbFileName = "dbCPS.accdb";
            string CurrentDatabasePath = Path.Combine(Environment.CurrentDirectory , dbFileName);
            string backTimeStamp = Path.GetFileNameWithoutExtension(dbFileName) + "_" + dateToday + ".zip";// +Path.GetExtension(dbFileName);
            string destFileName = backTimeStamp;// +dbFileName;
            FolderBrowserDialog fbd = new FolderBrowserDialog();
            if (fbd.ShowDialog() == DialogResult.OK)
            {
                string PathtobackUp = fbd.SelectedPath.ToString();
                destFileName = Path.Combine(PathtobackUp, destFileName);

                //File.Copy(CurrentDatabasePath, destFileName, true);
                using (var zip = new ZipFile())
                {
                    zip.AddFile(dbFileName);
                    zip.Save(destFileName);
                }
                MessageBox.Show("Backup successful! ");                  
            }            
    }

private void backupToolStripMenuItem1_Click(object sender, EventArgs e)
    {            
        BackupDatabase(DateTime.Now.ToString("ddMMMyyyy_HH.mm"));
    }


public void RestoreDatabase(string restoreFile)
    {
        string dbFileName = "dbCPS.accdb";
        string pathBackup = restoreFile;
        string CurrentDatabasePath = Path.Combine(Environment.CurrentDirectory, dbFileName);
        File.Copy(pathBackup, CurrentDatabasePath, true);
        MessageBox.Show("Restore successful! "); 
    }

private void restoreToolStripMenuItem_Click(object sender, EventArgs e)
    {
        try
        {                
            openFileDialogBackUp.FileName = "dbCPS";
            openFileDialogBackUp.InitialDirectory = AppDomain.CurrentDomain.BaseDirectory + @"Sauvegardes";
            if (openFileDialogBackUp.ShowDialog() == DialogResult.OK)
                RestoreDatabase(openFileDialogBackUp.FileName);
        }
        catch (Exception error)
        {
            MessageBox.Show(error.ToString());
        }
    }

このコードは圧縮されたファイルを抽出しますが、同時に復元を行う方法がわかりません。

        using (ZipFile zip = ZipFile.Read(restoreFile))
        {
            zip.ExtractAll(CurrentDatabasePath);
        }
4

3 に答える 3

3

やりました!コードが必要な人のために、ここにあります:

using (ZipFile zip = ZipFile.Read(pathBackup))
        {
            zip.ExtractAll(Environment.CurrentDirectory, ExtractExistingFileAction.OverwriteSilently);                
        }
于 2013-06-24T06:36:14.593 に答える