เนื้อหาต่อไปนี้ 1-4 เป็นความรู้ที่เกี่ยวข้องที่รวบรวมออนไลน์ โดยสรุปแล้วพวกเขาเป็นประเด็นความรู้ดังต่อไปนี้:
1. วิธีที่ใช้กันมากที่สุดในการอ่านไฟล์คุณสมบัติ inputStream ใน = getClass (). getResourceasstream ("ResourCename"); วิธีนี้ต้องการให้ไฟล์คุณสมบัติและคลาสปัจจุบันอยู่ในโฟลเดอร์เดียวกัน หากอยู่ในแพ็คเกจอื่นคุณต้องใช้:
inputStream ins = this.getClass (). getResourceasstream ("/cn/zhao/properties/testpropertiesPath2.properties");2. รับวิธีการเส้นทางใน Java
3. การใช้เส้นทางที่ได้รับอย่างง่าย
4. สามวิธีในการรับไฟล์คุณสมบัติในการสะท้อนกลับ
1 วิธีการและความคิดที่พบบ่อยที่สุดเกี่ยวกับการได้รับไฟล์คุณสมบัติในการสะท้อน:
มีหลายวิธีในการอ่านไฟล์คุณสมบัติใน Java บทความที่พบบ่อยที่สุดบนอินเทอร์เน็ตคือ "หกวิธีในการอ่านไฟล์คุณสมบัติใน Java" อย่างไรก็ตามในแอปพลิเคชัน Java วิธีที่ใช้กันมากที่สุดคือการใช้งานผ่านวิธี GetResourceasstream (ชื่อสตริง) ของคลาส java.lang.class อย่างไรก็ตามฉันได้เห็นว่ารหัสจำนวนมากที่อ่านไฟล์คุณสมบัติทำสิ่งนี้:
inputStream ใน = getClass (). getResourceasstream ("resourcename"); มีปัญหาที่นี่นั่นคือสิ่งนี้ถูกละเว้นโดยค่าเริ่มต้นเมื่อโทร GetClass ()! เราทุกคนรู้ว่าสิ่งนี้ไม่สามารถใช้ในวิธีการคงที่ (คงที่) หรือบล็อกคงที่ เหตุผลก็คือวิธีการแบบคงที่หรือบล็อกรหัสเป็นของคลาสเองและไม่ได้เป็นของวัตถุบางอย่าง สิ่งนี้แสดงถึงวัตถุปัจจุบันและวัตถุไม่ได้เริ่มต้นเมื่อมีการเรียกใช้วิธีการหรือบล็อกแบบสแตติก
ปัญหาคือ: ถ้าฉันไม่ต้องการให้คลาสบางอย่างมีวัตถุฉันจะตั้งค่าตัวสร้างเริ่มต้นของคลาสนี้เป็นส่วนตัวและแน่นอนว่าฉันจะไม่เขียนตัวสร้างทั่วไปอื่น ๆ และคลาสของฉันเป็นคลาสเครื่องมือทั้งหมดเป็นวิธีการและตัวแปรคงที่ ฉันต้องการรับไฟล์คุณสมบัติในบล็อกคงที่หรือวิธีการคงที่และวิธีนี้จะไม่ทำงาน
แล้วฉันควรทำอย่างไร? อันที่จริงคลาสนี้ไม่ได้ใช้เช่นนี้ มันแค่ต้องได้รับวัตถุคลาสซึ่งไม่ใช่เรื่องง่าย -
การใช้วัตถุคลาสแม่ในทุกคลาสไม่สะดวกและปลอดภัยกว่าที่จะใช้วัตถุคลาสมากกว่าการใช้ของคุณเพื่อเขียนคลาสเอง? ฮ่าฮ่านี่คือตัวอย่างเพื่ออำนวยความสะดวกในการสื่อสาร
นำเข้า java.util.properties; นำเข้า Java.io.InputStream; นำเข้า java.io.ioException; / ** * ตัวอย่างของการอ่านคุณสมบัติไฟล์ * ไฟล์: testproperties.java * ผู้ใช้: leizhimin * วันที่: 2008-2-15 18:38:40 */ testproperties คลาสสุดท้ายของสาธารณะ สตริงคงที่ส่วนตัว param2; คงที่ {คุณสมบัติ prop = คุณสมบัติใหม่ (); อินพุตสตรีมใน = วัตถุ คลาส .getResourceasstream ("/test.properties"); ลอง {prop.load (in); param1 = prop.getProperty ("inityears1") .trim (); param2 = prop.getProperty ("inityears2") .trim (); } catch (ioexception e) {e.printstacktrace (); }} / *** ตัวสร้างส่วนตัวไม่จำเป็นต้องใช้วัตถุ* / Private TestProperties () {} สตริงคงที่สาธารณะ getParam1 () {return param1; } สตริงคงที่สาธารณะ getParam2 () {return param2; } โมฆะคงที่สาธารณะหลัก (สตริง args []) {system.out.println (getParam1 ()); System.out.println (getParam2 ()); -ผลการทำงาน:
151
152
แน่นอนว่ามันยังโอเคที่จะแทนที่ Object.class ด้วย int.class ฮ่าฮ่าคุณสามารถลองได้
นอกจากนี้หากคุณอ่านไฟล์คุณสมบัติในวิธีการคงที่หรือบล็อกมีวิธีที่ปลอดภัยที่สุดอีกวิธีหนึ่งซึ่งคือการรับวัตถุคลาสโดยตรงโดยชื่อของคลาส ตัวอย่างเช่นในตัวอย่างนี้สามารถเขียนเป็น testproperties.class นี่คือวิธีที่ปลอดภัยที่สุด
2 วิธีรับเส้นทาง:
ไฟล์ fileb = ไฟล์ใหม่ (. getClass (). getResource ("") .getPath ()); ระบบ. out .println ("path fileb:" + fileb);2.2 รับชื่อโครงการของคลาสปัจจุบัน:
ระบบ. ออก. println ("user.dir path:" + ระบบ. getProperty ("user.dir"))))3. การใช้งาน Java อย่างง่ายเพื่อให้ได้เส้นทาง
/ *** รับเส้นทางสัมบูรณ์ของไฟล์ภายใต้เส้นทางสัมพัทธ์ของโครงการ** @param parentdir* ไดเรกทอรีหลักของไฟล์เป้าหมายตัวอย่างเช่นในไดเรกทอรีโครงการมี lib, bin และ conf directory ดังนั้นโปรแกรมจะทำงานใน Lib หรือ* Bin String getPath (สตริง parentdir, ชื่อไฟล์สตริง) {สตริงพา ธ = null; string userDir = system.getProperty ("user.dir"); string userDirName = ไฟล์ใหม่ (userDir) .getName (); if (userDirName.equalsignorecase ("lib") || userdirname.equalsignorecase ("bin")) {ไฟล์ newf = ไฟล์ใหม่ (userdir); ไฟล์ newp = ไฟล์ใหม่ (newf.getParent ()); if (filename.trim (). เท่ากับ ("")) {path = newp.getPath () + file.Sparator + parentdir; } else {path = newp.getPath () + file.Sparator + parentdir + file.Sparator + filename; }} else {if (filename.trim (). equals ("")) {path = userdir + file.Saperator + parentdir; } else {path = userdir + file.Saperator + parentdir + file.Saperator + filename; }} เส้นทางส่งคืน; - 4 ใช้การสะท้อนเพื่อรับเส้นทาง:
InputStream IPS1 = การแจงนับ คลาส .getClassLoader () .getResourceasstream ("CN/ZHAO/ENUMSTUDY/TESTPROPERTIESPATH1.Properties"); InputStream IPS2 = การแจงนับ คลาส .getResourceaseStream ("TestPropertiesPath1.Properties"); InputStream IPS3 = การแจงนับ คลาส .getResourceasstream ("คุณสมบัติ/testpropertiespath2.properties");ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น