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;"结尾
我基本上想返回一个检查,看看文件夹中是否存在文件。知道为什么我的不工作吗?
谢谢
您可以在方法中编写一行代码:
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;
}
}