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

本文关键字:是否 存在 文件 文件夹 检查 | 更新日期: 2023-09-27 18:13:40

我是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"。做了您打算调用该方法吗?

好像不像,"return check;"结尾

我基本上想返回一个检查,看看文件夹中是否存在文件。知道为什么我的不工作吗?

谢谢

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

您可以在方法中编写一行代码:

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

请注意,您要么必须使用字面值字符串(以@为前缀),要么必须正确转义目录名,即"C:''temp"

不,它不喜欢最后的return check; -你想让它做什么?您的方法check -因此"基于check返回真或假"并没有真正意义。你真的是的意思是返回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();
}

(您可以使用EnumerateFiles,如BrokenGlass所示,这对于大型目录更有效,但它仅在。net 4及以上版本中可用)

乍一看,问题在于您的"check"变量与您的函数具有相同的名称…

试试....

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