جافا:ما الذي يشكل ملفًا "عاديًا" في سياق File.isFile()؟

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

سؤال

لقد واجهت موقفًا حيث يُرجع file.isFile() خطأ، مما يشير إلى أن الملف ليس "عاديًا".ومع ذلك، لا أستطيع العثور على تعريف لما يعنيه "طبيعي".المستندات رابط لأوراكل ولاية:

يكون الملف عاديًا إذا لم يكن دليلاً، بالإضافة إلى أنه يلبي معايير أخرى تعتمد على النظام.

الملف مملوك لـ _www:staff ولديه أذونات -rw-r--r--.الدليل مملوك أيضًا لـ _www:staff ولديه أذونات drwxrw-r--.العملية التي يتم الوصول إلى الملف مملوكة لها bob:staff.النظام هو ماك 10.9.يمكن للعملية قراءة الملف وتحميله وعرضه بشكل جيد؛المشكلة الوحيدة هي أن استدعاء isFile() يُرجع خطأ، مما يعني أن Java تعتقد أنه ليس ملفًا عاديًا.

لذا، للعودة إلى السؤال الأكبر، تحت أي ظروف سيعود هذا الاستدعاء كاذبًا على الرغم من وجود الملف، والمسار صحيح، ويمكن الوصول إلى الملف؟

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

المحلول

الدليل مملوك أيضًا لـ _www:staff ولديه أذونات drwxrw-r--.العملية التي يتم الوصول إلى الملف مملوكة لها bob:staff.

لا تحتوي العملية على إذن "x" (فحص) في الدليل.استدعاء النظام الذي يستخدمه JVM للتنفيذ File.isFile() يتطلب هذا الإذن.استدعاء النظام هذا فاشل، بقدر ما File.isFile() تشعر بالقلق من أن الملف غير موجود.

من الخطأ دائمًا إزالة الإذن "x" من الدليل أثناء منح الإذن "r".

نصائح أخرى

في نظام يونكس، يمكن أن يكون الملف:

  • ملف عادي
  • الدليل
  • ارتباط رمزي
  • الأنابيب المسماة
  • قابس كهرباء
  • ملف الجهاز
  • الباب (نظام صن سولاريس)

يشير الملف "العادي" إلى ملف عادي هنا.إنه النوع الوحيد من الملفات الذي لا يفرض فيه النظام أي متطلبات على البنية الداخلية للملف.

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