file.move ، لماذا أحصل على fileNotfoundException؟ الملف موجود

StackOverflow https://stackoverflow.com/questions/2528488

  •  22-09-2019
  •  | 
  •  

سؤال

إنه غريب للغاية لأن البرنامج يكرر الملف! Outfolder و Infolder كلاهما في H:/ My External HD باستخدام Windows 7. الفكرة هي نقل جميع المجلدات التي تحتوي فقط على ملفات مع توسيع نطاق DB و SVN. عندما أحاول نقل المجلد ، أحصل على استثناء. يخبرني VS2010 أنه لا يمكن العثور على المجلد المحدد في 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.
            }
        }
    }
هل كانت مفيدة؟

المحلول

أعتقد أنك تحاول نقل دليل كامل باستخدام file.move الذي يتوقع اسم الملف.

جرب استخدام دليل بدلاً من ذلك ، لأن ذلك يسمح لك بنقل المجلدات بأكملها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top