jeudi 23 juillet 2015

Replacing string on a file that are checked in list view C#

i am trying to create a program that will replace a string inside .txt file. heres the trick. i am replacing the string in the file if they are checked . but when i do an alternate check its still replacing the other. private void BatchReplace() { string sourceFolder = FilePath.Text; string searchWord = Searchbar.Text;

        DateTime now = DateTime.Now;

        List<string> allFiles = new List<string>();
        AddFileNamesToList(sourceFolder, allFiles);
        if (listView1.CheckedItems.Count != 0)
        {
            foreach (String file in allFiles)
            {
                for (int x = 0; x <= listView1.CheckedItems.Count - 1; x++)
                {
                    if (file.Contains(listView1.CheckedItems[x].Text))
                    {
                        MessageBox.Show("File contains: " + listView1.CheckedItems[x].Text);
                        try
                        {
                            DialogResult dialogResult = MessageBox.Show("Are you sure you want to replace \"" + Searchbar.Text + "\" with \"" + Replacebar.Text + "\"?", "WARNING!", MessageBoxButtons.YesNo);
                            if (dialogResult == DialogResult.Yes)
                            {
                                StreamReader reader = new StreamReader(file);
                                string content = reader.ReadToEnd();
                                reader.Close();

                                content = Regex.Replace(content, Searchbar.Text, Replacebar.Text);
                                StreamWriter writer = new StreamWriter(file);
                                writer.Write(content); writer.Close();
                            }
                            else
                            {
                            }
                        }
                        catch
                        { 
                        } 
                        }
                    }
                }
            }
        }
        else
        {
        MessageBox.Show("Please Check the files you want to rename");
        }
    }
   public static void AddFileNamesToList(string sourceDir, List<string> allFiles)
    {

        string[] fileEntries = Directory.GetFiles(sourceDir);

        try
        {
            foreach (string fileName in fileEntries)
            {
                allFiles.Add(fileName);
            }

            //Recursion    
            string[] subdirectoryEntries = Directory.GetDirectories(sourceDir);
            foreach (string item in subdirectoryEntries)
            {
                // Avoid "reparse points"
                if ((File.GetAttributes(item) & FileAttributes.ReparsePoint) != FileAttributes.ReparsePoint)
                {
                    AddFileNamesToList(item, allFiles);
                }
            }
        }




Aucun commentaire:

Enregistrer un commentaire