2

私はこのコードを持っています:

private void SearchForDoc()
        {
            try
            {
                outputtext = @"c:\temp\outputtxt";
                outputphotos = @"c:\temp\outputphotos";
                temptxt = @"c:\temp\txtfiles";
                tempphotos = @"c:\temp\photosfiles";
                if (!Directory.Exists(temptxt))
                {
                    Directory.CreateDirectory(temptxt);
                }
                if (!Directory.Exists(tempphotos))
                {
                    Directory.CreateDirectory(tempphotos);
                }
                if (!Directory.Exists(outputtext))
                {
                    Directory.CreateDirectory(outputtext);
                }
                if (!Directory.Exists(outputphotos))
                {
                    Directory.CreateDirectory(outputphotos);
                }
                t = Environment.GetEnvironmentVariable(Environment.GetFolderPath(Environment.SpecialFolder.Personal));

                ApplyAllFiles(t,ProcessFile(t);
                for (int i = 0; i < textfiles.Length; i++)
                {


                        FileInfo fi = new FileInfo((textfiles[i]));
                        DirectoryInfo d = new DirectoryInfo(temptxt);
                        long dirSize = DirSize(d);

                        if ((dirSize + fi.Length) <= 8388608)
                            fi.CopyTo(temptxt + "\\" + fi.Name, true);
                        else
                            break;

                }

次に、この後、2つの方法があります。

static void ProcessFile(string path) {/* ... */}
        static void ApplyAllFiles(string folder, Action<string> fileAction)
        {
            foreach (string file in Directory.GetFiles(folder))
            {
                fileAction(file);
            }
            foreach (string subDir in Directory.GetDirectories(folder))
            {
                try
                {
                    ApplyAllFiles(subDir, fileAction);
                }
                catch
                {
                    // swallow, log, whatever
                }
            }
        }

私の方法でこの 2 つの方法を使用すると、ドキュメント ディレクトリとそのすべてのサブディレクトリからすべてのテキスト ファイルを取得する必要があります。

私の方法では、次のことを行いました。

ApplyAllFiles(t,ProcessFile(t);

しかし、それは間違った使い方です。メソッドを使用するにはどうすればよいですか?

4

1 に答える 1

1

ProcessFileメソッドには既に と同じ署名があるため、Action<string>メソッド名を指定するだけで済みます。

ApplyAllFiles(t, ProcessFile);
于 2013-08-11T02:30:51.740 に答える