{"id":946,"date":"2010-06-01T23:49:23","date_gmt":"2010-06-01T15:49:23","guid":{"rendered":"http:\/\/www.andreanolanusse.com\/pt\/?p=946"},"modified":"2011-03-08T11:43:16","modified_gmt":"2011-03-08T03:43:16","slug":"%e2%80%9clinq-para-diretoriosarquivos%e2%80%9d-com-delphi-prism-2011-e-net-4","status":"publish","type":"post","link":"http:\/\/www.andreanolanusse.com\/pt\/%e2%80%9clinq-para-diretoriosarquivos%e2%80%9d-com-delphi-prism-2011-e-net-4\/","title":{"rendered":"\u201cLinq para Diret\u00f3rios\/Arquivos\u201d com Delphi Prism 2011 e .NET 4"},"content":{"rendered":"<p>.NET 4 nos permiti trabalhar com tipos enumerados para diret\u00f3rios e arquivos atrav\u00e9s do retorno de listas (collection) a partir de m\u00e9todos espec\u00edficos que retornam lista de objetos DirectoryInfo, FileInfo ou FileSystemInfo, atrav\u00e9s destes objetos o desenvolvimento fica muito mais f\u00e1cil. At\u00e9 as vers\u00f5es anteriores ao .NET 4 voc\u00ea poderia obter essas lista como Array. <em>Enumerable collections<\/em> s\u00e3o mais perform\u00e1ticos que arrays.<\/p>\n<p>Delphi Prism 2011 traz suporte completo a .NET 4, os exemplos a seguir mostram como utilizar enumerar diret\u00f3rios e arquivos.<\/p>\n<p><strong><em>Enumareting <\/em>nome de diret\u00f3rios &#8211; este exemplo lista todos os diret\u00f3rios a partir de &#8220;c:\\Program Files\\&#8221;<\/strong><\/p>\n<pre class=\"brush: delphi\">class method ConsoleApp.Main(args: array of System.String);\r\nbegin\r\n  try\r\n    var dirPath: System.String := 'c:\\Program Files';\r\n\r\n    \/\/ LINQ query.\r\n    var dirs :=  from dir in Directory.EnumerateDirectories(dirPath) select dir;\r\n\r\n    \/\/ Show results.\r\n    for each dir in dirs do begin\r\n      \/\/ Remove path information from string.\r\n      Console.WriteLine('{0}', dir.Substring(dir.LastIndexOf('\\') + 1))\r\n    end;\r\n    Console.WriteLine('{0} directories found.', dirs.Count().ToString());\r\n\r\n    \/\/ Optionally create a List collection.\r\n    var workDirs: List := new List(dirs)\r\n  except\r\n    on UAEx: UnauthorizedAccessException do begin\r\n      Console.WriteLine(UAEx.Message)\r\n    end;\r\n    on PathEx: PathTooLongException do begin\r\n      Console.WriteLine(PathEx.Message)\r\n    end;\r\n  end;\r\n  Console.ReadKey;\r\n\r\nend;<\/pre>\n<p><strong><em>Enumerating <\/em>arquivos em todos os diret\u00f3rios &#8211; este exemplo procura a palavra &#8220;license&#8221; em todos os arquivos TXT<\/strong><\/p>\n<pre class=\"brush: delphi\">class method ConsoleApp.Main(args: array of System.String);\r\nbegin\r\n\r\n  try\r\n\r\n    var files :=  from sfile in Directory.EnumerateFiles('c:\\', '*.txt', SearchOption.AllDirectories)\r\n                  from line in File.ReadLines(sfile)\r\n                  where line.Contains('license')\r\n                  select new class( File := sfile, Line := line);\r\n\r\n    for each f in files do begin\r\n      Console.WriteLine('{0}'#9'{1}', f.File, f.Line)\r\n    end;\r\n\r\n    Console.WriteLine('{0} files found.', files.Count().ToString());\r\n  except\r\n    on UAEx: UnauthorizedAccessException do begin\r\n      Console.WriteLine(UAEx.Message);\r\n    end;\r\n    on PathEx: PathTooLongException do begin\r\n      Console.WriteLine(PathEx.Message);\r\n    end;\r\n  end;\r\n\r\n  Console.ReadKey;\r\n\r\nend;<\/pre>\n<p><strong><em>Enumerating <\/em>uma cole\u00e7\u00e3o de objetos DirectoryInfo &#8211; este exemplo lista todos os diret\u00f3rios criados antes de Abril de 2010<\/strong><\/p>\n<pre class=\"brush: delphi\">class method ConsoleApp.Main(args: array of string);\r\nbegin\r\n\r\n  var dirPrograms: DirectoryInfo := new DirectoryInfo('c:\\program files');\r\n  var StartOf2010: DateTime := new DateTime(2010, 4, 1);\r\n\r\n  \/\/ LINQ query for all directories created before April of 2010.\r\n  var dirs :=  from dir in dirPrograms.EnumerateDirectories()\r\n               where dir.CreationTimeUtc &lt; StartOf2010\r\n               select new class (ProgDir := dir);\r\n  \/\/ Show results.\r\n  for each di in dirs do begin\r\n    Console.WriteLine('{0}', di.ProgDir.Name)\r\n  end;\r\n\r\n  Console.ReadKey;\r\nend;<\/pre>\n<p>Voc\u00ea pode fazer o download do Delphi Prism 2011 Trial <a href=\"http:\/\/www.embarcadero.com\/products\/delphi-prism\" target=\"_blank\"><strong>aqui<\/strong><\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>.NET 4 nos permiti trabalhar com tipos enumerados para diret\u00f3rios e arquivos atrav\u00e9s do retorno de listas (collection) a partir de m\u00e9todos espec\u00edficos que retornam lista de objetos DirectoryInfo, FileInfo ou FileSystemInfo, atrav\u00e9s destes objetos o desenvolvimento fica muito mais f\u00e1cil. At\u00e9 as vers\u00f5es anteriores ao .NET 4 voc\u00ea poderia obter essas lista como Array. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":773,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_s2mail":"","footnotes":""},"categories":[48],"tags":[97,49],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u201cLinq para Diret\u00f3rios\/Arquivos\u201d com Delphi Prism 2011 e .NET 4 | Andreano Lanusse | Tecnologia e Desenvolvimento de Software<\/title>\n<meta name=\"description\" content=\".NET 4 nos permiti trabalhar com tipos enumerados para diret\u00f3rios e arquivos atrav\u00e9s do retorno de listas (collection) a partir de m\u00e9todos espec\u00edficos que\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.andreanolanusse.com\/pt\/\u201clinq-para-diretoriosarquivos\u201d-com-delphi-prism-2011-e-net-4\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u201cLinq para Diret\u00f3rios\/Arquivos\u201d com Delphi Prism 2011 e .NET 4 | Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"og:description\" content=\".NET 4 nos permiti trabalhar com tipos enumerados para diret\u00f3rios e arquivos atrav\u00e9s do retorno de listas (collection) a partir de m\u00e9todos espec\u00edficos que\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.andreanolanusse.com\/pt\/\u201clinq-para-diretoriosarquivos\u201d-com-delphi-prism-2011-e-net-4\/\" \/>\n<meta property=\"og:site_name\" content=\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"article:published_time\" content=\"2010-06-01T15:49:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2011-03-08T03:43:16+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/03\/Icon_DelphiPrism.png\" \/>\n\t<meta property=\"og:image:width\" content=\"175\" \/>\n\t<meta property=\"og:image:height\" content=\"175\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:site\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\">\n\t<meta name=\"twitter:data1\" content=\"2 minutos\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"description\":\"Andreano Lanusse blog - artigos, tutoriais e v&iacute;deos sobre tecnologia, desenvolvimento de software (Delphi XE4, C#, PHP, .NET) e t&eacute;cnicas de programa&ccedil;&atilde;o\",\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"http:\/\/www.andreanolanusse.com\/pt\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/%e2%80%9clinq-para-diretoriosarquivos%e2%80%9d-com-delphi-prism-2011-e-net-4\/#primaryimage\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/03\/Icon_DelphiPrism.png\",\"contentUrl\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/03\/Icon_DelphiPrism.png\",\"width\":175,\"height\":175},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/%e2%80%9clinq-para-diretoriosarquivos%e2%80%9d-com-delphi-prism-2011-e-net-4\/#webpage\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/%e2%80%9clinq-para-diretoriosarquivos%e2%80%9d-com-delphi-prism-2011-e-net-4\/\",\"name\":\"\\u201cLinq para Diret\\u00f3rios\/Arquivos\\u201d com Delphi Prism 2011 e .NET 4 | Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/%e2%80%9clinq-para-diretoriosarquivos%e2%80%9d-com-delphi-prism-2011-e-net-4\/#primaryimage\"},\"datePublished\":\"2010-06-01T15:49:23+00:00\",\"dateModified\":\"2011-03-08T03:43:16+00:00\",\"description\":\".NET 4 nos permiti trabalhar com tipos enumerados para diret\\u00f3rios e arquivos atrav\\u00e9s do retorno de listas (collection) a partir de m\\u00e9todos espec\\u00edficos que\",\"breadcrumb\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/%e2%80%9clinq-para-diretoriosarquivos%e2%80%9d-com-delphi-prism-2011-e-net-4\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/%e2%80%9clinq-para-diretoriosarquivos%e2%80%9d-com-delphi-prism-2011-e-net-4\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/%e2%80%9clinq-para-diretoriosarquivos%e2%80%9d-com-delphi-prism-2011-e-net-4\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/%e2%80%9clinq-para-diretoriosarquivos%e2%80%9d-com-delphi-prism-2011-e-net-4\/#webpage\"}}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/%e2%80%9clinq-para-diretoriosarquivos%e2%80%9d-com-delphi-prism-2011-e-net-4\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/%e2%80%9clinq-para-diretoriosarquivos%e2%80%9d-com-delphi-prism-2011-e-net-4\/#webpage\"},\"author\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"headline\":\"\\u201cLinq para Diret\\u00f3rios\/Arquivos\\u201d com Delphi Prism 2011 e .NET 4\",\"datePublished\":\"2010-06-01T15:49:23+00:00\",\"dateModified\":\"2011-03-08T03:43:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/%e2%80%9clinq-para-diretoriosarquivos%e2%80%9d-com-delphi-prism-2011-e-net-4\/#webpage\"},\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"image\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/%e2%80%9clinq-para-diretoriosarquivos%e2%80%9d-com-delphi-prism-2011-e-net-4\/#primaryimage\"},\"keywords\":[\"Delphi Prism\",\"LINQ\"],\"articleSection\":[\"Delphi Prism (.NET)\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/%e2%80%9clinq-para-diretoriosarquivos%e2%80%9d-com-delphi-prism-2011-e-net-4\/#respond\"]}]},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\",\"name\":\"Andreano Lanusse\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"caption\":\"Andreano Lanusse\"},\"logo\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\"},\"sameAs\":[\"https:\/\/twitter.com\/andreanolanusse\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/946"}],"collection":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/comments?post=946"}],"version-history":[{"count":0,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/946\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media\/773"}],"wp:attachment":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media?parent=946"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/categories?post=946"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/tags?post=946"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}