0

プログラムがファイルを繰り返し処理しているため、非常に奇妙です! outfolder と infolder は両方とも H:/ Windows 7 を使用している私の外部 HD にあります。拡張子 db と svn-base を持つファイルのみを含むすべてのフォルダーを移動するという考えです。フォルダを移動しようとすると、例外が発生します。VS2010は、dirで指定されたフォルダーが見つからないことを教えてくれます。このコードは dir を反復処理しているため、どうして見つからないのでしょうか! これは奇妙です。

        string []theExt = new string[] { "db", "svn-base" };
        foreach (var dir in Directory.GetDirectories(infolder))
        {
            bool hit = false;
            if (Directory.GetDirectories(dir).Count() > 0)
                continue;
            foreach (var f in Directory.GetFiles(dir))
            {
                var ext = Path.GetExtension(f).Substring(1);
                if(theExt.Contains(ext) == false)
                {
                    hit = true;
                    break;
                }
            }
            if (!hit)
            {
                var dst = outfolder + "\\" + Path.GetFileName(dir);
                File.Move(dir, outfolder); //FileNotFoundException: Could not find file dir.
            }
        }
    }
4

1 に答える 1

6

ファイル名を期待するFile.Moveを使用してディレクトリ全体を移動しようとしていると思います。

代わりにDirectory.Moveを使用してみてください。これにより、フォルダー全体を移動できるようになります。

于 2010-03-27T07:18:13.613 に答える