سؤال

أحاول أن أقرأ من بعض الملفات باستخدام شيء مثل هذا

IO.foreach("TeamFields.txt") { |line| fieldNames.push(line.chomp) }

إنه يعمل بشكل جيد عند تشغيل من سطر الأوامر، ولكن عندما أكون حزمة إلى .exe مع الأحذية وتشغيله لا يمكن العثور على الملف. هل هناك طريقة لتحديد مسار نسبي. exe أو هل يجب علي توفير FilePath الكامل (مثل "C: Files TeamFields.txt")؟ شكرا للمساعدة.

هل كانت مفيدة؟

المحلول

هذا لأن الملف التنفيذي الخاص بك لا يعمل مع الدليل الحالي الصحيح.

إما إصلاح الدليل الحالي (على سبيل المثال في الاختصار) أو تعديل برنامج Ruby الخاص بك لضبط دليل العمل تلقائيا إلى دليل البرنامج مع:

Dir.chdir(File.dirname($PROGRAM_NAME))

نصائح أخرى

تحتاج إلى تعيين "دليل التطبيق الحالي" بشكل صحيح قبل الذهاب قريب. يمكن للمستخدم تنفيذ تطبيقك باستخدام Dir بدء التشغيل المختلفة، أو يمكن لنظام الاتصال بتطبيقك مع DIR مختلف.

إذا كانت الملفات المعنية موجودة في مجلد تطبيقك، فإن الشيء الوحيد الذي تحتاج إلى القيام به هو الحصول على هذا المجلد، وقم بتعيينه لتكون حدا.

أنا لا برمجة في Ruby، لكنني أفعل مع Windows، وأصاد الاحتمالات ستستند المسار النسبي إلى موقع ملف .exe.

لذلك، نعم، ربما تكون أفضل حالا في تمرير مسار كامل لاسم الملف.

ثابت __FILE__ سوف تحتوي على المسار الكامل إلى الملف المنفذ حاليا. يمكنك بعد ذلك استخدام طرق فئة الملفات لتجريد اسم الملف، إلحاق المسار النسبي لأي ملف آخر في الحزمة الخاصة بك، هل تريد وحل النتيجة.

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