المحتويات التالية 1-4 هي المعرفة ذات الصلة التي تم جمعها عبر الإنترنت. لتلخيص ، هم نقاط المعرفة التالية:
1. الطريقة الأكثر استخدامًا لقراءة ملفات الخصائص inputStream في = getClass (). getResourCeasStream ("resourcename") ؛ تتطلب هذه الطريقة أن يكون ملف الخصائص والفئة الحالية في نفس المجلد. إذا في حزمة مختلفة ، يجب استخدام:
inputStream ins = this.getClass (). getResourCeasStream ("/cn/Zhao/properties/testPropertiesPath2.properties") ؛2. احصل على طريقة المسار في جافا
3. تنفيذ بسيط للحصول على مسارات
4. ثلاث طرق للحصول على ملفات الخصائص في التفكير
1 الأساليب والأفكار الأكثر شيوعًا حول الحصول على ملفات الخصائص في التفكير:
هناك العديد من الطرق لقراءة ملفات الخصائص في Java. المقالات الأكثر شيوعًا على الإنترنت هي "ست طرق لقراءة ملفات الخصائص في جافا". ومع ذلك ، في تطبيقات Java ، تتمثل الطريقة الأكثر شيوعًا في تنفيذها من خلال طريقة GetResourCeasStream (اسم السلسلة) لفئة java.lang.class. ومع ذلك ، فقد رأيت أن العديد من الرموز التي تقرأ ملفات الخصائص تفعل ذلك:
inputStream in = getClass (). getResourCeasStream ("ResourCename") ؛ هناك مشكلة هنا ، أي أن هذا يتم حذفه افتراضيًا عند استدعاء getClass ()! نعلم جميعًا أنه لا يمكن استخدام هذا في طرق ثابتة (ثابتة) أو كتل ثابتة. والسبب هو أن الأساليب أو كتل الرموز الثابتة تنتمي إلى الفئة نفسها ولا تنتمي إلى كائن معين. يمثل هذا نفسه الكائن الحالي ، ولا يتم تهيئة الكائن عند استدعاء الطرق أو الكتل الثابتة.
المشكلة هي: إذا كنت لا أريد أن يكون لدى فئة معينة كائن ، فسوف أقوم بتعيين المُنشئ الافتراضي لهذا الفئة إلى القطاع الخاص ، وبالطبع لن أكتب منشئين مشتركين آخرين. وصفتي هي فئة الأدوات ، وكلها طرق ومتغيرات ثابتة. أرغب في الحصول على ملفات الخصائص في كتل ثابتة أو طرق ثابتة ، ولن تعمل هذه الطريقة.
إذن ماذا علي أن أفعل؟ في الواقع ، لا يتم استخدام هذه الفئة مثل هذا. يحتاج فقط إلى الحصول على كائن فئة ، وهو ليس بالأمر السهل -
أخذ كائن الفئة الأصل لجميع الفئات ، أليس من المريح وأكثر أمانًا استخدام الكائن. هاها ، إليك مثال لتسهيل التواصل.
استيراد java.util.properties ؛ استيراد java.io.inputstream ؛ استيراد java.io.ioException ؛ / ** * مثال على قراءة ملفات خصائص * الملف: TestProperties.java * المستخدم: Leizhimin * التاريخ: 2008-2-15 18:38:40 */ فئة الفئة النهائية العامة testProperties {private Static String Param1 ؛ سلسلة ثابتة خاصة param2 ؛ ثابت {Properties Prop = New Properties () ؛ inputStream في = كائن. class .getResourCeasStream ("/test.properties") ؛ حاول {prop.load (in) ؛ param1 = prop.getProperty ("inityears1") .trim () ؛ param2 = prop.getProperty ("inityears2") .trim () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }} / *** مُنشئ خاص ، لا يلزم وجود كائن* / TestProperties () {} static String getParam1 () {return param1 ؛ } سلسلة ثابتة عامة getParam2 () {return param2 ؛ } public static void main (String args []) {system.out.println (getParam1 ()) ؛ System.out.println (getParam2 ()) ؛ }}نتائج التشغيل:
151
152
بالطبع ، لا يزال من المقبول استبدال object.class بـ int.class. هاها ، يمكنك تجربتها.
بالإضافة إلى ذلك ، إذا قرأت ملف الخصائص بطريقة أو كتلة ثابتة ، فهناك طريقة أخرى أمان أخرى ، والتي تتمثل في الحصول على كائن الفئة مباشرة باسم الفئة. على سبيل المثال ، في هذا المثال ، يمكن كتابته كـ testproperties.class. هذه هي الطريقة الأكثر أمانًا.
2 كيفية الحصول على المسار:
ملف fileb = ملف جديد (هذا .getClass (). getResource ("") .getPath ()) ؛ نظام. Out .println ("pileb path:" + fileb) ؛2.2 احصل على اسم مشروع الفصل الحالي:
نظام. Out .println ("user.dir path:" + system. getProperty ("user.dir"))3. تطبيق Java بسيط للحصول على المسار
/** *Get the absolute path of the file under the relative path of the project* * @param parentDir *The parent directory of the target file, for example, in the project directory, there are lib, bin and conf directories, so the program runs in lib or * bin, and the required configuration file is in conf, you need to find the absolute path of the configuration file* @param fileName *File name* @return an absolute path*/ public static String getPath (String Parentdir ، اسم ملف السلسلة) {string path = null ؛ string userDir = system.getProperty ("user.dir") ؛ سلسلة userDirName = ملف جديد (userDir) .getName () ؛ if (userDirName.equalsInsignoreCase ("lib") || userDirName.equalsInsIgnoreCase ("bin")) {file newf = new file (userDir) ؛ ملف newp = ملف جديد (newf.getParent ()) ؛ if (filename.trim (). يساوي ("")) {path = newp.getPath () + file.separator + parentdir ؛ } آخر {path = newp.getPath () + file.separator + parentdir + file.separator + filename ؛ }} else {if (filename.trim (). equals ("")) {path = userDir + file.separator + parentdir ؛ } آخر {path = userDir + file.separator + parentdir + file.separator + filename ؛ }} مسار الإرجاع ؛ } 4 استخدم الانعكاس للحصول على المسار:
InputStream IPS1 = التعداد. class .getClassLoader () .getResourCeasStream ("CN/Zhao/EnumStudy/TestPropertiesPath1.Properties") ؛ InputStream IPS2 = التعداد. class .getResourCeasStream ("TestPropertiesPath1.Properties") ؛ InputStream IPS3 = التعداد. class .getResourCeasStream ("الخصائص/testPropertiesPath2.properties") ؛ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.