C# 文件夹、子文件夹和文件不会出现在 C# Windows 应用程序目录路径比较代码中

标签 c# windows-applications subdirectory

对于这段代码,我希望用户基本上输入两个目录路径,如果文件夹或文件有任何差异,就比较它们,一直到 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# 文件夹、子文件夹和文件不会出现在 C# Windows 应用程序目录路径比较代码中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46199978/

相关文章:

c# - 如何在不关注它的情况下使用控制台/Windows 应用程序?

java - URI 没有层次结构。如何使用 getResourceAsStream 获取文件路径

c# - 我们可以随机访问字节的一部分吗

c# - 将日期时间转换为 IST

c# - Dispatcher 未出现在 C# Windows 窗体应用程序上

security - windows启动前如何运行Application.exe?

java - 如果文件夹包含文件那么它在Java中显示Else忽略?

mod-rewrite - 使用 mod_rewrite 将辅助域映射到子目录

c# - 是否有支持嵌入 HTML 页面的跨操作系统 GUI 框架?

c# - 我可以将依赖项注入(inject) ServiceStack 请求过滤器吗?