C# 检查文件名在FileInfo数组中是否存在多次 FileInfo[]folderFiles=folder.GetFiles(); foreach(folderFiles中的FileInfo文件) { int fileCount=0; StreamWriter sw=null; string fileName=Path.GetFileNameWithoutExtension(file.Name); string[]brkedfilename=fileName.Split(“”“); 字符串stringToCheck=brkedfilename[3]; 对于(int i=0;i
您可以使用LINQ查找具有相同brkedNames的文件:C# 检查文件名在FileInfo数组中是否存在多次 FileInfo[]folderFiles=folder.GetFiles(); foreach(folderFiles中的FileInfo文件) { int fileCount=0; StreamWriter sw=null; string fileName=Path.GetFileNameWithoutExtension(file.Name); string[]brkedfilename=fileName.Split(“”“); 字符串stringToCheck=brkedfilename[3]; 对于(int i=0;i,c#,C#,您可以使用LINQ查找具有相同brkedNames的文件: FileInfo[] folderFiles = folder.GetFiles(); foreach (FileInfo file in folderFiles) { int fileCount = 0; StreamWriter sw = null; string fileName = Path.GetFileNameWithoutExtension(file.Name); string[]
FileInfo[] folderFiles = folder.GetFiles();
foreach (FileInfo file in folderFiles)
{
int fileCount = 0;
StreamWriter sw = null;
string fileName = Path.GetFileNameWithoutExtension(file.Name);
string[] brkedfilename = fileName.Split('_');
string stringToCheck = brkedfilename[3];
for (int i = 0; i <= folderFiles.Count() - 1; i++)
{
string fileName2 = folderFiles[i].Name;
string[] brkedfilename2 = fileName2.Split('_');
if (brkedfilename2[3] == stringToCheck)
{
fileCount = ++fileCount;
if (fileCount == 2)
{
sw = new StreamWriter(folderPath + "/" + newFileName, true);
sw.WriteLine(stringToCheck + " " + "--" + " " + "Repeated in folder " + " " + folder.Name);
sw.Close();
}
}
}
}
此查询按拆分名称的第四部分对所有文件进行分组(注意:在您的原始代码中,我不检查是否至少有4部分),然后选择包含多个文件的组。它还提供一些统计信息-brked名称、同名文件数和文件集合
var repeatedFiles = from f in folderFiles
let brkedName = Path.GetFileNameWithoutExtension(f.Name).Split('_')[3]
group f by brkedName into g
where g.Count() > 1
select new
{
BrkedName = g.Key,
Count = g.Count(),
Files = g
};
您可以使用LINQ查找具有相同brkedNames的文件:
FileInfo[] folderFiles = folder.GetFiles();
foreach (FileInfo file in folderFiles)
{
int fileCount = 0;
StreamWriter sw = null;
string fileName = Path.GetFileNameWithoutExtension(file.Name);
string[] brkedfilename = fileName.Split('_');
string stringToCheck = brkedfilename[3];
for (int i = 0; i <= folderFiles.Count() - 1; i++)
{
string fileName2 = folderFiles[i].Name;
string[] brkedfilename2 = fileName2.Split('_');
if (brkedfilename2[3] == stringToCheck)
{
fileCount = ++fileCount;
if (fileCount == 2)
{
sw = new StreamWriter(folderPath + "/" + newFileName, true);
sw.WriteLine(stringToCheck + " " + "--" + " " + "Repeated in folder " + " " + folder.Name);
sw.Close();
}
}
}
}
此查询按拆分名称的第四部分对所有文件进行分组(注意:在您的原始代码中,我不检查是否至少有4部分),然后选择包含多个文件的组。它还提供一些统计信息-brked名称、同名文件数和文件集合
var repeatedFiles = from f in folderFiles
let brkedName = Path.GetFileNameWithoutExtension(f.Name).Split('_')[3]
group f by brkedName into g
where g.Count() > 1
select new
{
BrkedName = g.Key,
Count = g.Count(),
Files = g
};
我建议使用hashset。hashset不能包含重复的元素。当您添加重复的元素时,请执行hashset方法
add
returnfalse
,程序继续运行,但hashset不会获取重复的元素
foreach(var group in repeatedFiles)
sw.WriteLine($"{group.BrkedName} -- repeated {group.Count} times in {folder.Name}");
var duplicate=new HashSet();
foreach(folderFiles中的FileInfo文件)
{
int fileCount=0;
StreamWriter sw=null;
string fileName=Path.GetFileNameWithoutExtension(file.Name);
string[]brkedfilename=fileName.Split(“”“);
字符串stringToCheck=brkedfilename[3];
如果(!duplicate.Add(stringToCheck))
{
sw=新StreamWriter(folderPath+“/”+新文件名,true);
sw.WriteLine(stringToCheck++--++++++,在文件夹“+”+folder.Name”中重复);
sw.Close();
}
}
当元素在
Hashset
中时,程序会添加每个元素。当我知道元素在Hashset
中,并且我根据需要保存在文件中时,我建议使用Hashset。Hashset不能包含重复的元素。添加重复元素时执行hashset方法Add
返回false
,程序继续运行,但hashset不会获取重复的元素
foreach(var group in repeatedFiles)
sw.WriteLine($"{group.BrkedName} -- repeated {group.Count} times in {folder.Name}");
var duplicate=new HashSet();
foreach(folderFiles中的FileInfo文件)
{
int fileCount=0;
StreamWriter sw=null;
string fileName=Path.GetFileNameWithoutExtension(file.Name);
string[]brkedfilename=fileName.Split(“”“);
字符串stringToCheck=brkedfilename[3];
如果(!duplicate.Add(stringToCheck))
{
sw=新StreamWriter(folderPath+“/”+新文件名,true);
sw.WriteLine(stringToCheck++--++++++,在文件夹“+”+folder.Name”中重复);
sw.Close();
}
}
当元素在
Hashset
已Add
metod returnfalse
时,当我知道元素在Hashset
中并且我根据需要保存在文件中时,程序添加每个元素列出所有存在的文件名。然后,您可以循环字典以写入控制台。您可以使用字典(文件名,重复时间)列出所有文件名是否存在。然后,您可以循环字典写入控制台。如何区分不带扩展名要写入的文件?是否有任何标准?如果条件仅是检查文件名是否存在2次,则可以从函数返回,或在sw.Close()后断开for循环;如何区分要在没有扩展名的情况下写入哪个文件?是否有任何标准?如果条件只是检查文件名是否存在2次,那么您可以从函数返回,或者在sw.Close()之后中断for循环;非常感谢您,先生…我尝试了上述代码,结果成功了…非常幸运:)非常感谢您,先生……我尝试了上面的代码,它成功了……非常高兴……)这里:这里: