我正在尝试用C#编写一个程序,用于解析新文件名的大文本,并将文件列表重命名为从文本文件中获取的名称。
所以在我的程序中,我们看到类似的东西:
string[] newNames = parseNames(txtFileName.Text);
string[] previousNames = getFileNames(txtFolder.Text);
在newNames中,我们有900多个名称,格式类似于“01208265-9”,而在previousNames中,我们应该使用与“Video1001”相似的旧格式的文件名数。
这就是函数getFileNames的样子:
private string[] getFileNames(string inputText)
{
//get the file names of all the files in the folder
//note, does not contain path, only file names
string[] FileNames;
DirectoryInfo folder = new DirectoryInfo(txtFolder.Text);
FileInfo[] Files2 = folder.GetFiles("*.avi");
FileNames = new string[Files2.Length];
for (int i = 0; i < Files2.Length; i++)
{
FileNames[i] = Files2[i].Name;
}
nameCompare comparer2 = new nameCompare();
Array.Sort(FileNames, comparer2);
return FileNames;
}
它是一个非常简单的函数,它接收文件夹的路径,并拉入该目录中的所有文件名,然后它对名称进行排序并返回数组。
注意数组中的第一个条目。我检查了两倍,三倍和四倍,以确保文件夹中没有新格式的文件。当我在900多个文件的较大数据集上运行程序时,只会弹出此问题。
我老老实实地感到困惑,我认为唯一的可能性就是DirectoryInfo.GetFiles()出现了问题我觉得不太可能,因为那是.net核心库的一部分,或者存在问题使用C#内存管理,以前奇怪的是,以前的数组覆盖了我的新数组中的第一个条目。
有没有人有任何想法?