C# 文件夹、子文件夹和文件不会出现在 C# windows 应用程序目录路径比较代码中
C# folder, subfolder, and files not coming up in C# windows application directory path comparison code
对于这段代码,我希望用户基本上输入两个目录路径,如果文件夹或文件有任何差异,就比较它们,一直到 C# 中的特定文件夹或文件 Windows 应用。我现在的代码只转到直接文件夹,并且只列出直接文件夹中的直接文件。
private void btnCompare_Click(object sender, EventArgs e)
{
// Clear previous results.
dgvFiles.Rows.Clear();
// Get sorted lists of files in the directories.
string dir1 = txtDir1.Text;
if (!dir1.EndsWith("\")) dir1 += "\";
string[] file_names1 = Directory.GetFileSystemEntries(dir1);
for (int i = 0; i < file_names1.Length; i++)
{
file_names1[i] = file_names1[i].Replace(dir1, "*.*");
}
Array.Sort(file_names1);
string dir2 = txtDir2.Text;
if (!dir2.EndsWith("\")) dir2 += "\";
string[] file_names2 = Directory.GetFileSystemEntries(dir2);
for (int i = 0; i < file_names2.Length; i++)
{
file_names2[i] = file_names2[i].Replace(dir2, "*.*");
}
Array.Sort(file_names2);
// Compare.
int i1 = 0, i2 = 0;
while ((i1 < file_names1.Length) && (i2 < file_names2.Length))
{
if (file_names1[i1] == file_names2[i2])
{
// They match. Display them both.
dgvFiles.Rows.Add(new Object[] { file_names1[i1], file_names2[i2] });
i1++;
i2++;
}
else if (file_names1[i1].CompareTo(file_names2[i2]) < 0)
{
// Display the directory 1 file.
dgvFiles.Rows.Add(new Object[] { file_names1[i1], null });
i1++;
}
else
{
// Display the directory 2 file.
dgvFiles.Rows.Add(new Object[] { null, file_names2[i2] });
i2++;
}
}
如有任何帮助,我们将不胜感激。非常感谢!
您可以使用 GetFileSystemEntries 的重载,它采用进一步的 SearchPattern
字符串和 SearchOption
作为参数。这还将为您提供包括文件在内的子文件夹:
string[] file_names1 = Directory.GetFileSystemEntries(dir1, "*",
SearchOption.AllDirectories);
对于这段代码,我希望用户基本上输入两个目录路径,如果文件夹或文件有任何差异,就比较它们,一直到 C# 中的特定文件夹或文件 Windows 应用。我现在的代码只转到直接文件夹,并且只列出直接文件夹中的直接文件。
private void btnCompare_Click(object sender, EventArgs e)
{
// Clear previous results.
dgvFiles.Rows.Clear();
// Get sorted lists of files in the directories.
string dir1 = txtDir1.Text;
if (!dir1.EndsWith("\")) dir1 += "\";
string[] file_names1 = Directory.GetFileSystemEntries(dir1);
for (int i = 0; i < file_names1.Length; i++)
{
file_names1[i] = file_names1[i].Replace(dir1, "*.*");
}
Array.Sort(file_names1);
string dir2 = txtDir2.Text;
if (!dir2.EndsWith("\")) dir2 += "\";
string[] file_names2 = Directory.GetFileSystemEntries(dir2);
for (int i = 0; i < file_names2.Length; i++)
{
file_names2[i] = file_names2[i].Replace(dir2, "*.*");
}
Array.Sort(file_names2);
// Compare.
int i1 = 0, i2 = 0;
while ((i1 < file_names1.Length) && (i2 < file_names2.Length))
{
if (file_names1[i1] == file_names2[i2])
{
// They match. Display them both.
dgvFiles.Rows.Add(new Object[] { file_names1[i1], file_names2[i2] });
i1++;
i2++;
}
else if (file_names1[i1].CompareTo(file_names2[i2]) < 0)
{
// Display the directory 1 file.
dgvFiles.Rows.Add(new Object[] { file_names1[i1], null });
i1++;
}
else
{
// Display the directory 2 file.
dgvFiles.Rows.Add(new Object[] { null, file_names2[i2] });
i2++;
}
}
如有任何帮助,我们将不胜感激。非常感谢!
您可以使用 GetFileSystemEntries 的重载,它采用进一步的 SearchPattern
字符串和 SearchOption
作为参数。这还将为您提供包括文件在内的子文件夹:
string[] file_names1 = Directory.GetFileSystemEntries(dir1, "*",
SearchOption.AllDirectories);