rohit24c Ответов: 3

как добавить файлы из 2 dir в fileInfo


Привет ,
у меня есть цикл foreach для DirectoryInfo, в котором я получаю 2 каталога .

поэтому в этом цикле я хочу назначить все файлы в обоих каталогах в один FileInfo.
fileInfo[] FILE =null;
по каждому элементу(Directoryinfoкласс ...)
{
Файл = dirinfo.заражен();
}

но в конце концов я не могу хранить файлы из обоих реж.
файлы из 2-го Режа заменяют файлы 1-го Режа в файле.

пожалуйста, помогите мне.

3 Ответов

Рейтинг:
23

Reza Ahmadi

привет,
вам нужно использовать AddRange, а не'=', как это:

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

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


Используйте список, чтобы включить AddRange. Кроме того, я предполагал, что вы заполните Ddd своим DirectoryInfos.


Овации


rohit24c

спасибо дружище все работает :)

Reza Ahmadi

Добро пожаловать!

Рейтинг:
14

Oshtri Deka

Помогите себе с временным списком:

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

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

fileInfosArray = tempList.ToArray();


Кстати, эта строка вашего кода была проблемой:
FILE = dirinfo.getfiles();

Это значит: НАБОР Файл, чтобы стать массивом FileInfos из текущего каталога,
в то время как (как я вижу из вашего вопроса) Вы хотели
ДОБАВЛЯТЬ массив FileInfos из текущего каталога в файл.


Рейтинг:
0

Member 12695777

Хорошо, если я правильно понимаю, у вас есть 2 каталога (папки), и вы хотите, чтобы информация о файле из обоих каталогов отображалась в одном документе. Итак, эта программа перечислит все файлы в одном каталоге, а затем перечислит все файлы во втором каталоге все в одном csv или txt файле. -
Вот очень простое (базовое) решение для того, что вы пытаетесь сделать:


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 );
                }
            }
        }
    }
}

Я надеюсь, что это поможет вам в вашей ситуации и, возможно, поможет кому-то еще в будущем.


Richard MacCutchan

Ответили шесть лет назад.