Я кодировал поиск и копирование файлов, используя 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();