C#类检查文件夹中是否存在文件

时间:2011-11-05 19:44:46

标签: c# class

我是C#的新手,我编写了以下课程:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace PrinterManager
{
    class CheckFilesExist
    {
        public class CheckFilesExist
        {
            public static bool check(bool isThere)
            {
                DirectoryInfo di = new DirectoryInfo("c:\temp");
                FileInfo[] TXTFiles = di.GetFiles("*.xml");
                if (TXTFiles.Length == 0)
                {
                    return isThere;
                }
                foreach (var fi in TXTFiles)
                    //return (fi.Exists);
                    return (fi.Exists);

                    return check;
            }

        }

    }
}

它应检查* .xml文件的目录并将它们添加到数组中。如果它没有找到任何文件,那么它应该返回false。它将遍历数组并根据“check”返回true或false。

但我收到以下错误:

  

无法将方法组'check'转换为非委托类型'bool'。难道   你打算调用这个方法吗?

它似乎不喜欢,“返回检查;”最后。

我基本上想要返回一个检查以查看文件夹中是否存在文件。 任何想法为什么我的工作不起作用?

由于

4 个答案:

答案 0 :(得分:4)

你可以用你的方法制作一个单行:

return new DirectoryInfo(@"c:\temp").EnumerateFiles("*.xml").Any();

请注意,您必须使用文字字符串(前缀为@)或正确转义目录名称,即"C:\\temp"

答案 1 :(得分:3)

不,它最终不喜欢return check; - 您希望它做什么?您的方法check - 因此“基于check返回true或false”并不真正有意义。你真的意味着而不是返回isThere吗?

目前尚不清楚该参数究竟是什么意思,说实话......如果你已经问DirectoryInfo该目录中的文件,我个人希望他们存在 - 否则他们为什么会被退回?

哦,您的目录名称包含一个标签,我怀疑您确实需要反斜杠后跟t

我怀疑你的方法会更好:

public static bool TempDirectoryContainsXmlFiles()
{
    DirectoryInfo di = new DirectoryInfo(@"c:\temp");
    return di.GetFiles("*.xml").Length > 0; 
}

或为了清晰起见使用LINQ:

public static bool TempDirectoryContainsXmlFiles()
{
    DirectoryInfo di = new DirectoryInfo(@"c:\temp");
    return di.GetFiles("*.xml").Any();
}

(您可以使用BrokenGlass显示的EnumerateFiles,这对于大型目录更有效,但它仅在.NET 4及更高版本中可用。)

答案 2 :(得分:1)

尝试这样....

private static bool Check_file_Existence(string sFileName)
{
    try
    {
       return File.Exists(sFileName);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
        return false;
    }
}

答案 3 :(得分:1)

乍一看,问题是你的“检查”变量与你的功能同名......