2013-03-26 3 views
0

Основываясь на documentation on MSDN for DirectoryInfo.EnumerateFiles, процесс включает в себя:Как использовать DirectoryInfo.EnumerateFiles

  1. объявляя DirectoryInfo с путем
  2. с использованием метода EnumerateFiles для извлечения файлов

Там являются основополагающими классов, получить эту информацию, такую ​​как FileInfo, в зависимости от FileSystemInfo.

DirectoryInfo DR = new DirectoryInfo(@"C:\temp\Downloads"); 
foreach(FileInfo FF in DR.EnumerateFiles()) 
{ 
    textBox1.Text += FF.ToString()+ "\r\n"; 
} 
  1. Как перекодировать это где я могу объявить FileInfo перед использованием его напрямую?
  2. Как бы перекодировать это, если бы я использовал List<T>?
  3. Как я могу прочитать список перечислимых данных?

Благодаря

+0

я не уверен, что вы имеете в виду в первом вопросе. Вам нужна переменная, содержащая список Fileinfos? –

+0

Зачем вам нужно «объявлять FileInfo перед его использованием»? – Arran

+0

Я думал, что это стандартная процедура кодирования? это не так и даже если не нужно, как бы я предварительно объявил и сохранил значения в переменной или в списке Fileinfo? –

ответ

1
  1. Почему вы хотите?
  2. var list = DR.EnumerateFiles().ToList();
+0

EnumerateFiles возвращает перечислитель ('IEnumerator '). Он представляет собой последовательность элементов; они лениво возвращаются, когда вы используете 'foreach'. Базовая конструкция - это блок итератора (возможно, с использованием 'yield'). –

+0

вопрос: я хочу узнать все возможные способы чтения поступающей информации от -> enumeratefiles Что здесь, возврат - это массив или объект? Как я могу прочитать входящее содержимое по одному с помощью enumeratefiles (нет конкретной причины для его использования) и что является наилучшим возможным способом использования 1) используя var LINQ (у меня нет видимости на содержимом, i должно дать параметры 2) с использованием списка (я пытаюсь понять это) (может у меня есть пример со списком надежда делает какой-то смысл здесь –

+0

спасибо всем, это надо меня к вылету. спасибо за ваши входные данные, вы можете закрыть этот открытый билет, как разрешено. –

0

Это не все, что ясно, что вы пытаетесь сделать, но, тем не менее, вы можете «объявить его перед использованием», выполнив ниже:

DirectoryInfo DR = new DirectoryInfo(@"C:\temp\Downloads"); 
List<string> filePaths = DR.EnumerateFiles(); 
IEnumerable<FileInfo> fileInfos = filePaths.Select(f => new FileInfo(f)); 
foreach(FileInfo fileInfo in fileInfos) 
{ 
    textBox1.Text += fileInfo.FullName.ToString()+ "\r\n"; 
} 

(То есть , просто переместить декларацию вне цикла Еогеаспа)

EnumerateFiles Поскольку возвращает полного пути файла, поэтому вам нужно будет создать FileInfo экземпляров из этого, что вы можете сделать, используя предоставленный для вас конструктор.

Чтобы сделать «список» бит вы уже говорили, вы просто добавить ToList() и LINQ будет делать работу за вас:

List<FileInfo> fileInfos = filePaths.Select(f => new FileInfo(f)).ToList(); 
+0

спасибо, все это меня запустило. Спасибо за ваши вкладки, вы можете закрыть этот открытый билет, как разрешено. –

Смежные вопросы