Как я могу улучшить это, чтобы он всегда соответствовал правильным файлам в c #? - PullRequest
0 голосов
/ 21 октября 2019

Я кодировал поиск и копирование файлов, используя C # в VS, и я хочу, чтобы он всегда совпадал с файлами. Используется для копирования рисунков или PDF-файлов, которые содержатся в списке Excel. В настоящее время это работает только иногда. Я всегда могу сопоставить файл в проводнике Windows. Возможно, что этот регистр, пробел или другие случайные символы мешают прямому сопоставлению. Сопоставление с помощью проводника Windows занимает много времени, и я хочу улучшить его, чтобы оно всегда совпадало с правильными файлами

 private List<string> getfoldercontent()
        {   directoriefiles = new List<FileInfo>();
            List<string> filesinfolder = new List<string>();

            foreach (string s in listBox1.Items)
            {
                DirectoryInfo di_x = new DirectoryInfo(s);

                string filetype = "";

                foreach (var file in di_x.GetFiles("* " + filetype, System.IO.SearchOption.AllDirectories))
                {


                    if (file.Name.ToLower().Contains("pdf"))
                    {   

                        try
                        {
                            directoriefiles.Add(file);
                            string sd = file.Name.Substring(0, file.Name.Length - 4).ToLower();
                            fullfilename.Add(sd);
                            sd = sd.Substring(0, sd.Length - 4);
                            filesinfolder.Add(sd);



                        }
                        catch
                        {

                        }
                    }


                }

            }
            return filesinfolder;
        }


--------- Second Function----




 bool getdrawings = checkBox1.Checked;


            int k = 1000;
            List<string> names = new List<string>();

            List<string> filesinfolder = getfoldercontent();

            try
            {
                k = int.Parse(textBox1.Text);
            }
            catch
            {
                MessageBox.Show("Not a number");
            }

            DirectoryInfo di = new DirectoryInfo("../../files/");
            string pathforfile = di.FullName + "/" + "drawinglist.xlsx";

            using (System.IO.FileStream _stream = new System.IO.FileStream(pathforfile, System.IO.FileMode.Open))
            {
                p = new ExcelPackage();
                p.Load(_stream);
                ws = p.Workbook.Worksheets["Sheet1"];


                for (int i = 1; i < k; i++)

                {

                    string temp = ws.Cells["B" + i.ToString()].Value == null ? string.Empty : ws.Cells["B" + i.ToString()].Value.ToString();
                    if (temp != string.Empty)
                    {

                        temp = temp.ToLower();
                        if(temp.Contains("-r"))
                        {
                            temp = temp.Substring(0, temp.Length - 4);
                        }
                        if (filesinfolder.Contains(temp))
                        {
                            try
                            {
                                int pos = filesinfolder.IndexOf(temp);
                                string filenamePotential = fullfilename[pos];

                                string rev = filenamePotential.Substring(filenamePotential.Length - 3).ToUpper();

                                if (getdrawings)
                                {
                                 //   string pathtodrawing = di.FullName + "/" + filenamePotential;
                                    FileInfo file = directoriefiles[pos];

                                    string pathtowrite = @"C:\Users\joe\Documents\Visual Studio 2015\Projects\Drawing Reader\Drawing Reader\files\Drawings\" + file;

                                    file.CopyTo(pathtowrite);
                                }
                                //  ws.Cells["C" + i.ToString()].Value = "found";
                                ws.Cells["C" + i.ToString()].Value = rev;
                            }
                            catch
                            {

                            }
                        }
                        else
                        {
                            ws.Cells["C" + i.ToString()].Value = "NOT-found";
                        }


                        names.Add(temp);
                    }

                } 


                Excelsavestuff();
...