daddy356 Ответов: 1

Как мне...как мне написать код C#, чтобы выбрать несколько файлов C# для преобразования только текста в кавычках в base64?


Еще раз здравствуйте,

Я хотел бы иметь возможность конвертировать свои файлы обратно в base64 после их обновления.
но я не хочу использовать регулярное выражение, я просто хочу преобразовать все строки в кавычки.
У меня есть файл, который я включаю в свои программы, которые при выполнении декодируют строки.
Я полагаю, что мы можем использовать приведенный ниже код с небольшими изменениями.

Вот несколько строк кода для его тестирования:

this.saveToolStripMenuItem.BackColor = System.Drawing.SystemColors.Menu;
            this.saveToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("saveToolStripMenuItem.Image")));
            this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
            this.saveToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.S)));
            this.saveToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
            this.saveToolStripMenuItem.Text = "&Save";
            this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click);
            this.saveAsToolStripMenuItem.BackColor = System.Drawing.SystemColors.Menu;
            this.saveAsToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("saveAsToolStripMenuItem.Image")));
            this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem";
            this.saveAsToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.A)));
            this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
            this.saveAsToolStripMenuItem.Text = "Save &As";
            this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.saveAsToolStripMenuItem_Click);
            this.exitToolStripMenuItem.BackColor = System.Drawing.SystemColors.Menu;
            this.exitToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("exitToolStripMenuItem.Image")));
            this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
            this.exitToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.X)));
            this.exitToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
            this.exitToolStripMenuItem.Text = "E&xit";
            this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); 
            this.optionsCtrlPToolStripMenuItem.BackColor = System.Drawing.SystemColors.Control;
            this.optionsCtrlPToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.shareSkinsCtrlHToolStripMenuItem});
            this.optionsCtrlPToolStripMenuItem.ForeColor = System.Drawing.SystemColors.ControlText;
            this.optionsCtrlPToolStripMenuItem.Name = "optionsCtrlPToolStripMenuItem";
            this.optionsCtrlPToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.P)));
            this.optionsCtrlPToolStripMenuItem.Size = new System.Drawing.Size(61, 20);
            this.optionsCtrlPToolStripMenuItem.Text = "O&ptions"; 
            this.shareSkinsCtrlHToolStripMenuItem.BackColor = System.Drawing.SystemColors.Menu;
            this.shareSkinsCtrlHToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("shareSkinsCtrlHToolStripMenuItem.Image")));
            this.shareSkinsCtrlHToolStripMenuItem.Name = "shareSkinsCtrlHToolStripMenuItem";
            this.shareSkinsCtrlHToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.H)));
            this.shareSkinsCtrlHToolStripMenuItem.Size = new System.Drawing.Size(172, 22);
            this.shareSkinsCtrlHToolStripMenuItem.Text = "S&hare Skins";
            this.shareSkinsCtrlHToolStripMenuItem.Click += new System.EventHandler(this.shareSkinsCtrlHToolStripMenuItem_Click); 
            this.helpToolStripMenuItem.BackColor = System.Drawing.SystemColors.Control;
            this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.aboutCtrlBToolStripMenuItem,
            this.checkForUpdateCtrlUToolStripMenuItem});
            this.helpToolStripMenuItem.ForeColor = System.Drawing.SystemColors.ControlText;
            this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
            this.helpToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F1;
            this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
            this.helpToolStripMenuItem.Text = "He&lp";
            this.aboutCtrlBToolStripMenuItem.BackColor = System.Drawing.SystemColors.Menu;
            this.aboutCtrlBToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("aboutCtrlBToolStripMenuItem.Image")));
            this.aboutCtrlBToolStripMenuItem.Name = "aboutCtrlBToolStripMenuItem";
            this.aboutCtrlBToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.B)));
            this.aboutCtrlBToolStripMenuItem.Size = new System.Drawing.Size(204, 22);
            this.aboutCtrlBToolStripMenuItem.Text = "A&bout";
            this.aboutCtrlBToolStripMenuItem.Click += new System.EventHandler(this.aboutCtrlBToolStripMenuItem_Click);V


Что я уже пробовал:

Вот что я использую для преобразования моих файлов C# из Base64 :

<pre>private void butDecodeFiles_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Title = "Open File";
            dlg.Filter = "C Sharp files (*.cs)|*.cs|All files (*.*)|*.*";
            dlg.Multiselect = true;
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                string line;

                string[] SelectedFiles = dlg.FileNames;
                dlg.Dispose();
                foreach (string file in SelectedFiles)
                {
                    using (StreamReader streamIn = new StreamReader(file))
                    {
                        using (StreamWriter streamOut = new StreamWriter(file + "-copy"))
                        {
                            while ((line = streamIn.ReadLine()) != null)
                            {
                                if (line.Contains("Base64Decode.strongName"))
                                {
                                    Regex rgx = new Regex("Base64Decode\\.strongName\\(\\\"(?<base64>[a-zA-z0-9\\/=]+)\\\"\\)");
                                    MatchCollection mc = rgx.Matches(line);
                                    if (mc.Count > 0)
                                    {
                                        foreach (Match m in mc)
                                        {
                                            string s = m.Groups["base64"].Value;
                                            byte[] data = Convert.FromBase64String(s);
                                            line = line.Replace(m.Value, "\"" + Encoding.Unicode.GetString(data) + "\"");
                                        }
                                    }
                                }
                                streamOut.WriteLine(line);
                            }
                        }
                    }
                    try
                    {
                        File.Delete(file);
                        File.Move(file + "-copy", file);
                        File.Delete(file + "-copy");
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("Error");
                        throw;
                    }
                }
                MessageBox.Show("Conversion Complete");
            }
        }

1 Ответов

Рейтинг:
1

Richard MacCutchan

Вы можете использовать Каталог.Метод GetFiles (Строка) (System.IO)[^] чтобы получить список файлов. Затем вы просто отправляете каждый файл из списка в свой процесс обновления. Процесс обновления должен сканировать содержимое каждого файла в поисках строк в кавычках, которые затем преобразуются в Base64. Было бы разумно при запуске этой программы создавать новые версии каждого файла в другом каталоге, а не перезаписывать оригиналы.