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

cocos2dx button的使用以及cocostudio/ObjectFactory.h: No such file or directory错误解决方案

上一篇博客里面讲过menu,在跟玩家交互的过程中,我们有些时候也需要使用到一些独立的button,cocos2dx中也有相应的button的控件可以使用,下面我们来看看如何进行使用。 首选需要包含所...

使用DIRECTORY_SEPARATOR带来的跳转问题

操作系统:windows 浏览器:Firefox 搜狗浏览器 问题描述:在PHP的代码中使用预定义常量DIRECTORY_SEPARATOR来组成链接的href跳转路径。在不同的浏览器下,可能会出现问...

使用Apache Shiro进行身份认证-Active Directory认证

Apache Shiro 支持基于活动目录的用户认证。 其配置文件shiro.ini配置如下: activeDirectoryRealm = org.apache.shiro.realm.acti...

flume学习(十一):如何使用Spooling Directory Source

1.如何理解将FTP上的信令数据汇聚到HDFS上去存储? 2.使用Spooling Directory Source的时候同时读写一个文件会怎样? 最近在弄一个信令数据汇聚的事情...

配置Portal V6.1使用IBM Tivoli Directory Server V6

配置前在tds中创建如下条目: 1. Add entry  Select Domain-->next-->next          Relative DN ---- dc=com ...

Java源码——使用JFileChooser获取文件及目录信息(Obtain file and directory information)

代码如下: 1. FileAndDirectoryInfo类(获取文件及目录信息) // Fig. 15.2: FileAndDirectoryInfo.java // File class us...

使用py2exe 将python文件转成exe文件(以及 error: [Errno 2] No such file or directory: 'MSVCP90.dll'解决方法)

用python写程序真的很简单,当我们开发出功能后,特别是带窗体的python程序,需要将python程序转成双击运行的exe程序。我们需要一个第三方模块 py2exe,就是将py转成exe的模块。只...

使用Apache Directory Studio初始化Cordys BOP CARS

新建系统平台,由生产环境、测试环境、开发环境构成,为了便于运维,现需要把这三个环境的基本信息同步一致。 首先,需要同步平台CARS中的目录数据,借助Apache Directory Studio工具从...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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