System.IO.Path 不包含 GetFiles 的定义

Posted

技术标签:

【中文标题】System.IO.Path 不包含 GetFiles 的定义【英文标题】:System.IO.Path does not contain a definition for GetFiles 【发布时间】:2013-09-30 09:23:55 【问题描述】:

我有一个奇怪的错误。我得到了一个包含 2 行的文本文件。 1 表示目录路径,1 表示数据。

应用程序将给定目录中文件的所有路径写入文本文件。但我希望能够通过第二个文本文件更改路径。

这是读取文本文件的代码:

//Reads 2 lines of the text file
string[] TextData = File.ReadAllLines(@text file);
    string DirectoryPath = TextData[1];
    string ScanHours = TextData[2];

这是编写string DirectoryPath = TextData[1]; 找到的所有文件的代码:

//Writes all the files of DirectoryPath into a string
string[] files = Directory.GetFiles(DirectoryPath, "*.*", System.IO.SearchOption.AllDirectories);

基本上,string DirectoryPath = TextData[1]; 指的是文本文件中的一行。该行包含一个目录的路径。

我收到此错误:System.IO.Directory does not contain a definition for GetFiles。 我尝试了多种方法,例如将Directory.GetFileS(); 更改为Path.GetFiles();

如果有人可以帮助我,或者指出我正确的方向,我将不胜感激! :)

编辑 -> 完整代码

public static void Main(string[] args)
        
            string[] TextData = File.ReadAllLines(@"C:\TextData.txt");
            string DirectoryPath = TextData[1];
            //string ScanHours = TextData[2];

        //Original
        //string DirectoryPath = File.ReadAllText(@"C:\DirectoryPath.txt");

        string[] files = Path.GetFiles(DirectoryPath, "*.*", System.IO.SearchOption.AllDirectories);
        List<string> updatedFiles = new List<string>();

        DateTime from = DateTime.Now.AddDays(-1);
        DateTime to = DateTime.Now;

        foreach (string name in files)
        
            FileInfo file = new FileInfo(name);
            string fullname = file.FullName;

            if (file.LastWriteTime >= from && file.LastWriteTime <= to)
            
                updatedFiles.Add(name);

                Console.WriteLine(file.FullName + " ; " + "last changed at >>  " + " ; " + file.LastWriteTime.ToString());
                Console.WriteLine();
            

            else
            

            
        
    

那里有一个 FileStream/Streamwriter 来记录每个输出。但我删除了它。

EDIT 2 -> 当使用Directory.GetFiles 而不是Path.GetFiles

System.ArgumentException:路径格式无效。 在 System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)

在 System.IO.Path.GetFullPathInternal(字符串路径)

在 System.IO.FileSystemEnumerableIterator1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler1 resultHandler, Boolean checkHost)

在 System.IO.Directory.GetFiles(String path, String searchPattern, SearchOption searchOption)

在 c:\Users\Vvandereng\Documents\Stage\Programmeren\LastWriteAccess-Checker\LastWriteAccess-Checker\Program.cs:regel 中的 CheckWithinTime.Program.Main(String[] args) 30

【问题讨论】:

你确定DirectorySystem.IO.Directory 查看错误我认为您有自己的班级,名为System.IO.Directory 如果我发布完整的代码会有帮助吗?好吧,大部分相关部分。 如果您创建了一个小而完整的(控制台)应用程序来重现问题,这将是一个很大的帮助。发布前验证。 返回什么:Console.WriteLine(Assembly.GetAssembly(typeof(Directory)).CodeBase); 【参考方案1】:

我收到此错误:System.IO.Directory 不包含 GetFiles 的定义

这很混乱,这里显示错误

错误 1“System.IO.Path”不包含“GetFiles”的定义

使用Directory.GetFiles尝试以下操作

string[] files = Directory.GetFiles(DirectoryPath, "*.*", System.IO.SearchOption.AllDirectories);

【讨论】:

我明白你想要什么。但那是我开始使用的确切代码,没有任何改变。 您的代码使用Path.GetFiles。如果Directory.GetFiles 也使用该代码和完整的错误消息而不是说出相同的错误消息而导致相同的错误邮政编码。当然错误信息会有所不同,这将有助于我们解决问题 哦,我的错,你是对的,对不起。我添加了使用Directory.GetFiles时遇到的错误。 DirectoryPath 变量的参数无效或路径无效。检查那个。它应该可以解决问题 我仔细检查过,一切都正确链接。我不想听起来粗鲁或任何东西,我感谢您的帮助!但我认为这与string[] TextData 有关。【参考方案2】:

尝试从 DirectoryPath 值中删除行尾字符。

【讨论】:

以上是关于System.IO.Path 不包含 GetFiles 的定义的主要内容,如果未能解决你的问题,请参考以下文章

使用System.IO.Combine(string path1, string path2, string path3)四个参数的重载函数提示`System.IO.Path.Combine(stri

我可以为 System.IO.Path 类创建扩展方法吗? [复制]

C# Winform中如何获取文件路径

文件处理系列--相对路径转绝对路径

返回文件路径中的想要的值

提示System.ArgumentNullException: 值不能为空。该怎么解决?