我是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'。难道 你打算调用这个方法吗?
它似乎不喜欢,“返回检查;”最后。
我基本上想要返回一个检查以查看文件夹中是否存在文件。 任何想法为什么我的工作不起作用?
由于
答案 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)
乍一看,问题是你的“检查”变量与你的功能同名......