سؤال

أحاول حذف دليل يحتوي على ملفات XML من كمبيوتر بعيد.يتم تجميع الكود الخاص بي وتشغيله بشكل جيد، ولكن عندما أذهب للحصول على قائمة بملفات XML في المسار الذي أحدده، فإنه لا يُرجع أي شيء.هل فاتني شيء إذن حكيم؟

لقد قمت بتشغيله من جهاز الكمبيوتر الخاص بي الذي تم تسجيل دخوله بنفسي ومن جهاز كمبيوتر آخر تم تسجيل دخوله كمستخدم مختلف.يتمتع كلا الحسابين بالتحكم الكامل في الدليل الذي يحتوي على ملفات XML.

أنا أستخدم .NET 2.0.

   static void Main(string[] args) {
        string directory, ext = ".xml"; // have tried xml and .xml

        if (args.Length != 1) {
             // do absolutely nothing if we do not exactly 1 argument
        } else {
            Console.WriteLine("Argument accepted.");
            directory = args[0];

            // make sure the directory passed is valid
            if (ValidateDirectory(directory)) {
                Console.WriteLine("Directory is valid.");
                DeleteFiles(directory, ext);
            }
        }
        Console.WriteLine("Done.");
    }

    static bool ValidateDirectory(string d) {
        return Regex.IsMatch(d, @""); // I removed my regex - it validates properly
    }

    static void DeleteFiles(string d, string ext) {
        DirectoryInfo di;
        FileInfo[] fi;

        di = new DirectoryInfo(d);
        fi = di.GetFiles(ext);

        Console.WriteLine("Number of files = " + fi.Length + ".");
        foreach (FileInfo f in fi) {
            try {
                Console.WriteLine(f.FullName);
                f.Delete();
            } catch (Exception ex) {
                // do nothing when there is an exception
                // just do not want it to quit
                Console.WriteLine(ex.ToString());
            }
        }
    }
هل كانت مفيدة؟

المحلول

وأعتقد أنك يجب أن تستخدم *. XML بدلا من مجرد. XML. ولكن أنا أتفق أيضا مع Kyralessa، اختبار على الجهاز المحلي أولا، ثم تضاف في التعقيد من الذهاب عبر الشبكة.

نصائح أخرى

وفي DeleteFiles، لديك السطر التالي:

وفاي = di.GetFiles (تحويلة)؛

وحيث تحويلة هو امتداد التي تمرر في، التي أعتقد أنها مجرد '. XML. تبحث الحصول على الملفات عن أية ملفات تسمى '. XML. GetFiles يأخذ البدل، الذي اعتقد انه ما كنت تنوي القيام به. وضع علامة النجمة (*) في الجبهة واعطاء أن المحاولة.

و-Brett

متابعة:

كنت بحاجة لاستخدام *.xml (كان يجب أن أعرف ذلك!) وهو يعمل الآن.

هذا الموقع عظيم!

وأفترض أنك تمر في مسار الشبكة؟ هل تفشل عند تشغيل البرنامج على المسار المحلي؟ هل هذا السطر: فاي = di.GetFiles (تحويلة)؛ عودة أي أجسام fileInfo؟

وربما كنت مجرد الحصول على شيء خاطئ الصغيرة التي يمكن أن تكون ثابتة من قبل بعض التصحيح.

وماذا يمر في كوسيطة؟ هل تستخدم محرك أقراص معين أو إشارة مباشرة (أي // الخادم / مجلد)؟

وبدلا من ValidateDirectory الخاص بك، يجب عليك استخدام Directory.Exists (الدليل) فقط لمعرفة ما اذا كان يمكن أن نرى الدليل على الإطلاق.

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