我需要创建一个程序来查看文件目录以搜索重复项

时间:2016-03-16 09:58:40

标签: c#

我需要创建一个程序,通过文件目录查找重复项,然后使用checklistbox和列表框在表单中显示用户,并将dubes放在选中的列表框中,然后没有dupes in列表框。我是C#的整个菜鸟,我之前只做过Python。帮助会很好,这是我到目前为止:

using System;
using System.IO;

namespace File_existence
{
public partial class fileForm : Form
{
    private string _filelistlocation;

    public fileForm()
    {
        InitializeComponent();
    }

    private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
    {

    }

    private void fileForm_Load(object sender, System.EventArgs e)
    {
        _filelistlocation = "C:\\temp\\clientactivityfiles.txt";
    }

    public static FileStream Open(
        string _filelistlocation,
        FileMode Read);


    private void button1_Click(object sender, System.EventArgs e)
    {
        // open _filelistlocation
        // foreach line in _filelistlocation
        // concatenate pat hand filename
        //
        if (File.Exists(@"C:\Temp\Trade Files\processed\filetest1.txt"))
            checkedListBox1.Items.Add("Yes");
            System.Console.WriteLine("The file exists");

        //StreamReader files= new StreamReader(File)();

    }

    private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
    {

    }
}

对不起,我应该更具体一点。我被告知在我的数据库中可能存在具有不同名称和重复名称或相同名称但文件夹不同的文件,我需要开发它以找到它们,然后再将其取出。

3 个答案:

答案 0 :(得分:1)

尝试使用此代码,它会为您提供重复变量中所有重复文件的名称:

DirectoryInfo directoryToCheck = new DirectoryInfo(@"C:\test");

FileInfo[] files= directoryToCheck.GetFiles("*.*", SearchOption.AllDirectories);

var duplicates= files.GroupBy(x => x.Name)
                        .Where(group => group.Count() > 1)
                        .Select(group => group.Key);

答案 1 :(得分:0)

在C#中,你需要使用括号来表示块语句:

        if (File.Exists(@"C:\Temp\Trade Files\processed\filetest1.txt"))
        {
            checkedListBox1.Items.Add("Yes");
            System.Console.WriteLine("The file exists");
        }

答案 2 :(得分:0)

我假设您要比较文件的内容,因为目录只能包含特定路径的1个文件。

查看System.IO函数。

您可以使用Directory.GetFiles()获取目录中的文件列表,这将返回路径列表。

然后,您可以针对其余文件检查每个文件的内容以编译列表(See generic lists,例如List<string>)。函数File.ReadAllBytes()File.ReadAllLines()可能对您有所帮助,但比较文件将取决于文件类型 - 有多种方法。