1

奇妙なエラーがあります。2行のテキストファイルを取得しました。1 つはディレクトリ パス、もう 1 つはデータ用です。

アプリケーションは、指定されたディレクトリ内のファイルのすべてのパスをテキスト ファイルに書き込みます。しかし、2 番目のテキスト ファイルを介してパスを変更できるようにしたいと考えています。

テキスト ファイルを読み取るためのコードは次のとおりです。

//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 がありました。しかし、私はそれを削除しました。

編集2 - >Directory.GetFiles代わりに使用する場合Path.GetFiles

System.ArgumentException: パスの形式が無効です。System.IO.Path.NormalizePath (文字列パス、ブール値の fullCheck、Int32 maxPathLength) で

System.IO.Path.GetFullPathInternal (文字列パス) で

System.IO.FileSystemEnumerableIterator 1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler1 resultHandler、ブール値の checkHost で)

System.IO.Directory.GetFiles (文字列パス、文字列 searchPattern、SearchOption searchOption) で

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

4

2 に答える 2

1

次のエラーが表示されます: System.IO.Directory に GetFiles の定義が含まれていません

これは紛らわしいです、ここにエラーが表示されます

エラー 1 'System.IO.Path' には 'GetFiles' の定義が含まれていません

で次のことを試してくださいDirectory.GetFiles

string[] files = Directory.GetFiles(DirectoryPath, "*.*", System.IO.SearchOption.AllDirectories);
于 2013-09-30T09:55:29.127 に答える
-3

DirectoryPath 値から行末文字を削除してみてください。

于 2013-09-30T09:33:20.377 に答える