【第22期】观点:IT 行业加班,到底有没有价值?

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...

Silverlight实例教程 - Out of Browser存取本地文件系统

在前文,我们讲述了Silverlight Out of Browser的基础以及自定义模式应用。本篇,我们将讲述Silverlight Out of Browser应用的重点 - 创建可信任应用,也称为Trusted Application. 早在Silverlight 3,Silverlight Out of Browser的功能由于权限的限制无法很好的满足用户的正常存取需求,仅能实现将Web应用脱离浏览器。而在Silverlight 4中,通过提升应用信任权限,大大增强了Silverlight Out of Browser的功能,在权限允许的情况下,用户

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

前面两篇介绍了File类和FileInfo类,对于文件的操作基本够用,但是后面还会补充一下FileStream相关的操作,例如StreamReader和StreamWriter的内容。本文主要介绍Di...

Silverlight实例教程 - Out of Browser存取本地文件系统

在前文,我们讲述了Silverlight Out of Browser的基础以及自定义模式应用。本篇,我们将讲述Silverlight Out of Browser应用的重点 - 创建可信任应用,也称为Trusted Application. 早在Silverlight 3,Silverlight Out of Browser的功能由于权限的限制无法很好的满足用户的正常存取需求,仅能实现将Web应用脱离浏览器。而在Silverlight 4中,通过提升应用信任权限,大大增强了Silverlight Out of Browser的功能,在权限允许的情况下,用户

分享 silverlight oob模式下, pc连接wince winmoble PDA 手持智能终端 ,复制文件的类,和使用方法

/*分享 silverlight oob模式下, pc连接wince winmoble PDA 手持智能终端  ,复制文件的类,和使用方法,该代码 在 OpenNETCF.Desktop.Commun...

.net中压缩和解压缩的处理

1.利用.net自带的压缩和解压缩方法GZip <p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: rgb(51,51,51); font-family: verdana,Arial,Helvetica,sans-serif; font-

Kmdtut 11---目录与文件

11.1 核心句柄表11.2 FileWorks驱动程序源代码11.3 创建目录与文件11.4 文件对象11.5 写入文件11.6 修改文件属性11.7 读取文件11.8 向文件追加数据11.9 截短...

php使用mysqli连接报错HY000/2002:No such file or directory

具体错误如下: [code="java"] Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in /usr/local/apache2.4/htdocs/phpinfo.php on line 6 Connect failed: No such file or directory [/code] 检查了服务器环境 (1)mysql启动正常,通过客户端可以正常连接。 (2)php安装正常 (3)mysql,mysqli扩展安装正常 尝试将mysqli连接的地址从localhost修改成

C#常用目录操作总结

在C#中,常用的目录操作类有Directory, DirectoryInfo,基本上两个类提供的方法大同小异,有不算太大的区别,但是Directory类是静态类,所有的函数都是静态函数,可以直接调用。...

Silverlight实例教程 - Out of Browser的Debug和Notifications窗口

熟悉Silverlight的朋友应该知道,Silverlight从1.0版本到现在的4.0版本,其功能性越来越强大,从下图我们可以看出,Silverlight的应用模型的一个转变过程,从Javascript到现在Trusted应用,我们目睹
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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