Directory.EnumerateFiles的使用

转载 2011年01月19日 18:13:00

Directory.EnumerateFiles的使用
2010年11月14日 云飞扬
-
?[Copy to clipboard]View Code CSHARPusing System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
 
class Program
{
 static void Main(string[] args)
 {
        try
        {
   // LINQ query for all files containing the word 'Europe'.
    var files = from file in
    Directory.EnumerateFiles(@"//archives1/library/")
       where file.ToLower().Contains("europe")
       select file;
 
   // Show results.
   foreach (var file in files)
   {
    Console.WriteLine("{0}", file);
   }
   Console.WriteLine("{0} files found.",
    files.Count<string>().ToString());
  }
  catch (UnauthorizedAccessException UAEx)
  {
   Console.WriteLine(UAEx.Message);
  }
  catch (PathTooLongException PathEx)
  {
   Console.WriteLine(PathEx.Message);
        }
 }
}
 
 
Phil Haack has an interesting post about this topic, where he presents the following solution:
 
public static bool IsNullOrEmpty<T>(this IEnumerable<T> items) {
    return items == null || !items.Any();
}This solution, unfortunately, suffers from a common problem related to handling IEnumerables. The assumption that you can iterate over enumerable more than once. This hold true for things like collections, but in many cases, this sort of code will silently hide data:
 
var files = Directory.EnumerateFiles(".","*.cs");
if(files.IsNullOrEmpty())
{
    Cosnole.WriteLine("No files");
}
else
{
   foreach(var file in files)
   {
          Console.WriteLine(file);
   }
}The first file will never appear here.
 
A better solution is:
 
public static bool IsNullOrEmpty<T>(this IEnumerable<T> items, out IEnumerable<T> newItems)
{
    newItems = items;
    if(items == null)
        return false;
 
    var enumerator = items.GetEnumerator();
    if(enumerator.MoveNext() == false)
        return false;
 
    newItems = new[]{enumerator.Current}.Concat(enumerator);
 
    return true;
}That will not lose data.

原创文章转载请注明出处:云飞扬IT的blog


本文来自: 本站内容欢迎转载,但是禁止去掉本文链接(转载无妨,去掉链接可耻!):http://www.ajaxcn.net/archives/1519

C# 文件操作详解(三)Directory类

前面两篇介绍了File类和FileInfo类,对于文件的操作基本够用,但是后面还会补充一下FileStream相关的操作,例如StreamReader和StreamWriter的内容。本文主要介绍Di...
  • luoyanqing119
  • luoyanqing119
  • 2014年02月15日 14:46
  • 6112

enumerate Files and Folders(遍历)

1。对指定目录的浅遍历    - (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error  e.g....
  • berained
  • berained
  • 2014年01月26日 11:23
  • 1354

.NET Framework 4 文件IO读写的增强 激动人心的强大 或许正是你所期待的 基类库中的新增内容 转自msdn杂志

CLR 全面透析.NET Framework 4 基类库中的新增内容Justin Van Patten使用 Microsoft .NET 的每个人几乎都会用到基类库 (BCL)。一个更好的 BCL 几...
  • shigaofei1
  • shigaofei1
  • 2011年01月08日 17:17
  • 4025

C# 文件操作详解(三)Directory类

前面两篇介绍了File类和FileInfo类,对于文件的操作基本够用,但是后面还会补充一下FileStream相关的操作,例如StreamReader和StreamWriter的内容。本文主要介绍Di...
  • luoyanqing119
  • luoyanqing119
  • 2014年02月15日 14:46
  • 6112

C# Directory类的操作

Directory类位于System.IO 命名空间。Directory类提供了在目录和子目录中进行创建移动和列举操作的静态方法。此外,你还可以访问和操作各种各样的目录属性,例如创建或最后一次修改时间...
  • chenke87
  • chenke87
  • 2016年11月02日 10:38
  • 492

C++应用系列:递归遍历文件夹下所有文件--Directory类源码中的问题

日常工程中经常用到遍历文件夹内所有文件或指定格式文件。 因为主要都是做图像方面,OpenCV库接触较多,其中有实现遍历文件夹下所有文件的类Directory。 Directory里面包括3个成员函...
  • uestc_chenmo
  • uestc_chenmo
  • 2017年11月14日 16:36
  • 114

apache的<directory> 语句以及属性的含义

在整完apache和tomcat的之后我觉得有必要把和它下面的属性捋顺一下 如何访问根目录下的目录http://192.168.1.12/test/第一.缺省apache不允许访问http目录(没有...
  • u011685720
  • u011685720
  • 2015年09月23日 14:51
  • 5415

部署第一个域:Active Directory系列之二

在上篇博文中我们介绍了部署域的意义,今天我们来部署第一个域。一般情况下,域中有三种计算机,一种是域控制器,域控制器上存储着Active Directory;一种是成员服务器,负责提供邮件,数据库,DH...
  • albert528108
  • albert528108
  • 2013年09月16日 16:06
  • 1419

开发中遇到的异常记录

注:开发中经常会遇到各种异常,每每都是网上搜索。问题解决之后,可能过段时间就忘记了。下次遇到可能还需要去搜索找答案,因此在这里以博文形势记录下来。 ①java.lang.IllegalArg...
  • antti_king
  • antti_king
  • 2013年02月20日 12:44
  • 1695

执行应用程序出现: No such file or directory

 转自http://blog.csdn.net/kenny_wju/article/details/17629073 最近在移植opencv2.0的时候遇到该问题,工作环境如下: 宿主机:u...
  • qwaszx523
  • qwaszx523
  • 2017年02月22日 16:42
  • 904
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Directory.EnumerateFiles的使用
举报原因:
原因补充:

(最多只允许输入30个字)