C#listbox to file listing

时间:2009-12-18 16:55:27

标签: c#

我所拥有的是一个由文本框填充的列表框。

我想在特定目录中搜​​索与列表框条件匹配的所有文件。我想对列表框中的每个列表执行此操作,然后我想将所有匹配的文件复制到另一个目录。

所以Listbox包含: 苹果 橙子 水果

我想将apple * .txt复制到destiondirectory,然后将orange * .txt复制到目标目录,并将* .txt复制到destinationdirectory。

复制完所有内容之后,我想创建一个文本文件,将每个东西复制到它自己的文本文件中。所以目的地目录中的目录列表。

所以我会得到一个文本文件,其中包含符合特定标准IE apple *

的所有文件

感谢您的帮助和建议。

   string[] filesToCopy = listBox1.Items.
        string sourcefolder1 = @"K:\rkups";
        string destinationfolder = @"K:\g_aa_ge\qc";
        {
            string source = Path.Combine(sourcefolder1, filesToCopy[] + ".ann");
            string target = Path.Combine(destinationfolder, filesToCopy[] + ".ann");
            File.Copy(source,target);

 DirectoryInfo di = new DirectoryInfo(destinationfolder);
        FileInfo[] annfiles = di.GetFiles(string+"*.txt);
        foreach(FileInfo fi in annfiles)

字符串+是我不知道在哪里/如何列出列表框中的每个项目,以及在哪里   string [] filesToCopy = listBox1.Items。不确定如何列出字符串中的每个项目

更新: 1)读取列表框中的每个项目
2)尝试从源目录复制到目的地列表框中的项目 3)重复

多数民众赞成

2 个答案:

答案 0 :(得分:1)

我做了一个小例子,除了生成日志文件之外,它或多或少地做了你想做的事。

你应该能够从那里开始工作。

在我的示例中,代码只是使用复制文件的名称填充第二个文本框。 它经过测试和编译。

希望这有帮助! 安东尼

private void button1_Click(object sender, EventArgs e)
{
    string dirInput = "c:/test";
    string dirOutput = "c:/test2";
    listBox2.Items.Clear();

    bool overwriteFilesInOutputDir = true;

    if (Directory.Exists(dirInput))
    {
        if (!Directory.Exists(dirOutput))
            Directory.CreateDirectory(dirOutput);

        DirectoryInfo di = new DirectoryInfo(dirInput);
        foreach (string filterItem in listBox1.Items)
        {
            FileInfo[] rgFiles = di.GetFiles(filterItem);
            foreach (FileInfo fi in rgFiles)
            {
                File.Copy(fi.FullName, dirOutput + Path.DirectorySeparatorChar + fi.Name, overwriteFilesInOutputDir);
                listBox2.Items.Add(fi.Name);
            }
        }
    }
}

与其他提及的人一样,如果你先尝试自己做,并问你什么时候被卡住会有所帮助。

listBox1包含过滤器,例如“ .xls”或“ .asp”,listBox2只是为了检查复制文件的名称。

安东尼

答案 1 :(得分:0)

我仍然对你想做的事情感到有些困惑,但我为你修好了你的代码......

string source, fileToCopy, target;
string sourcefolder1 = @"K:\rkups";
string destinationfolder = @"K:\g_aa_ge\qc";
DirectoryInfo di = new DirectoryInfo(destinationfolder);
FileInfo[] annfiles;

foreach (string s in listBox1.Items)
{
     fileToCopy = s;
     source = Path.Combine(sourcefolder1, fileToCopy + ".ann");
     target = Path.Combine(destinationfolder, fileToCopy + ".ann");
     File.Copy(source, target);

     annFiles = di.GetFiles("*.txt");

     // Do whatever you need to do here...

}