如何将2目录中的文件添加到fileInfo [英] how to add files from 2 dir to a fileInfo

查看:57
本文介绍了如何将2目录中的文件添加到fileInfo的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,

i有一个针对DirectoryInfo的foreach循环,其中我有2个目录。



所以在这个循环中我想要将两个目录中的所有文件分配到单个FileInfo中。

fileInfo [] FILE = null;

foreach(Directoryinfo ...)

{

FILE = dirinfo.getfiles();

}



但最后我无法存储来自dir的文件。

来自2nd Dir的文件正在替换文件中第一个Dir的文件。



请帮助我。

解决方案



您需要使用AddRange而不是'=',如下所示:



列表<   FileInfo  >  FILE =新列表<   FileInfo  > (); 
DirectoryInfo [] Ddd;

foreach(Ddd中的DirectoryInfo dirInfo)
FILE.AddRange(dirInfo.GetFiles());





使用列表启用AddRange。另外,我猜你会用你的DirectoryInfos填写Ddd。





干杯


< blockquote>帮助自己处理临时列表:

 FileInfo [] fileInfosArray; 
列表< fileinfo> tempList = new List< fileinfo>();

foreach (DirectoryInfo di in yourDirInfoCollection)
{
tempList.AddRange(di.GetFiles());
}

fileInfosArray = tempList.ToArray();





顺便说一句,这行你的代码是问题:

 FILE = dirinfo.getfiles(); 



表示 SET FILE从当前目录成为FileInfos数组,

while(我可以从你的问题中看到)你想要

ADD 从当前目录到FILE的FileInfos数组。


好的,如果我理解正确,你有2个目录(文件夹),你希望两个目录中的文件信息列在一个目录中文献。因此,该程序将列出一个目录中的所有文件,然后在一个csv或txt文件中列出第二个目录中的所有文件。 -

这是一个非常简单的(基本)解决方案,用于你想要做的事情:





使用System; 
使用System.IO;

命名空间ConsoleApplication1
{
class程序
{
static void Main(string [] args)
{
DirectoryInfo A = new DirectoryInfo(c:/ Bank / TestFolderA);
FileInfo [] a = A.GetFiles(*。*,SearchOption.AllDirectories);

DirectoryInfo B =新的DirectoryInfo(c:/ Bank / TestFolderB);
FileInfo [] b = B.GetFiles(*。*,SearchOption.AllDirectories);

using(System.IO.StreamWriter file = new StreamWriter(@c:\ Bank\TestFolderC\TestResults1.csv))
{
foreach(FileInfo) x)a)
{
Console.WriteLine(@复制{0},{1},{2},{3},x.DirectoryName,x.Name,x.Extension,x 。长度);
file.WriteLine({0},{1},{2},{3},x.DirectoryName,x.Name,x.Extension,x.Length);
}

foreach(b中的FileInfo y)
{
Console.WriteLine(@复制{0},{1},{2},{3 },y.DirectoryName,y.Name,y.Extension,y.Length);
file.WriteLine({0},{1},{2},{3},y.DirectoryName,y.Name,y.Extension,y.Length);
}
}
}
}
}



我希望这有助于你的情况并且可能在将来帮助其他人。


Hello ,
i have a foreach loop for DirectoryInfo in which i am getting 2 directory .

so in this loop i want to assign all the files in both directory into single FileInfo.
fileInfo[] FILE =null;
foreach(Directoryinfo ...)
{
FILE = dirinfo.getfiles();
}

but at the end i am not able to store files from both the dir.
the files from 2nd Dir is replacing the files of 1st Dir in FILE.

please help me.

解决方案

hi,
you need to use AddRange rather than '=', like this:

List<FileInfo> FILE = new List<FileInfo>();
            DirectoryInfo[] Ddd;

            foreach (DirectoryInfo dirInfo in Ddd)
                FILE.AddRange(dirInfo.GetFiles());



Use a List to enable AddRange. In addition, I'v presumed that you will fill Ddd with you DirectoryInfos.


Cheers


Help yourself with temporary list:

FileInfo[] fileInfosArray;
List<fileinfo> tempList = new List<fileinfo>();

foreach(DirectoryInfo di in yourDirInfoCollection)
{
    tempList.AddRange(di.GetFiles());
}

fileInfosArray = tempList.ToArray();



Btw, this line of your code was the problem:

FILE = dirinfo.getfiles();


It means SET FILE to become array of FileInfos from current directory,
while (as I can see from your question) you wanted to
ADD array of FileInfos from current directory to FILE.


Okay, if I am understanding this correctly, you have 2 directories (folders) and you want the file info from both directories to list in one document. So, this program will list all the files in one directory, then list all the files in the second directory all in one csv or txt file. -
Here is a very simple (basic) solution for what you are trying to do:


using System;
using System.IO;

namespace ConsoleApplication1 
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo A = new DirectoryInfo("c:/Bank/TestFolderA");
            FileInfo[] a = A.GetFiles("*.*", SearchOption.AllDirectories);

            DirectoryInfo B = new DirectoryInfo("c:/Bank/TestFolderB");
            FileInfo[] b = B.GetFiles("*.*", SearchOption.AllDirectories);

            using (System.IO.StreamWriter file = new StreamWriter(@"c:\Bank\TestFolderC\TestResults1.csv"))
            {
                foreach (FileInfo x in a)
                {
                    Console.WriteLine(@"Copying {0}, {1}, {2}, {3} ", x.DirectoryName, x.Name, x.Extension, x.Length);
                    file.WriteLine("{0}, {1}, {2}, {3} ", x.DirectoryName, x.Name, x.Extension, x.Length);
                }

                foreach (FileInfo y in b)
                {
                    Console.WriteLine(@"Copying {0}, {1}, {2}, {3}", y.DirectoryName, y.Name, y.Extension, y.Length);
                    file.WriteLine("{0}, {1}, {2}, {3}", y.DirectoryName, y.Name, y.Extension, y.Length );
                }
            }
        }
    }
}


I Hope this helps with your situation and maybe help someone else in the future.


这篇关于如何将2目录中的文件添加到fileInfo的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆